面试笔试题

智力:

1. 有ABCD四人过桥,时间为1,2,5,10,只有一个手电筒,同时只能过两人,怎么过17分钟能过完?
2 + 1 + 10 + 2 + 2
走的快的就多走走
 
2. 假设有一个池塘,里面有无穷多的水,现有两个空水壶,容积分别为5升和6升,如何只用这2个水壶从池塘里取得3升的水.
1L (6-5)
2L (6 - (5-1))
3L (6 - (5 - 2))
 


解答题:

1.Linux下文件权限是:d-rw-r—w- 用八进制写出来,解释之。
    642
    目录权限:
     6: 属主权限=可读+可写
     4: 属组权限:可读
     2: 其他用户: 可写
 
2.写出Linux杀后台进程的命令;
     ps -ef | grep gmake | grep –v root | awk '{print $2}' | xargs  kill -9
    
3.将/home/dir1/li 目录压缩并归档,帮存在/home/下,名字是li.tar.gz
   tar -zcvf /home/li.tar.gz /home/dir1/li
 
4.#ifndef / define / endif 都有啥用?
   防止重复引用
 
5.C++程序被C编译器编译后的函数,为哈要用 extern "C"声明?
   C没有函数重载
 
6. ICMP是什么协议?在那一层?
    ICMP : IP层用它来与其他主机或路由器交换错误报文和其他重要信息(ping, traceroute工具使用)
 
7. 3次握手?
    SYN (SYN_SENT)
    SYN ACK(SYN_RCVD)
    ACK


大题:
1.写个函数比较两个字符串的大小,相等返回0。

#include
int compstr(char *stra,char *strb)
{
while(*stra == *strb){
if(*stra == '\0')
return 0;
stra++;
strb++;
}
return ((*stra >*strb) ? 1:-1);
}
void main(void){
char *stra = "abcdef";
char *strb = "abcdefg";
printf("%d\n",compstr(stra,strb));
}
 
2.进程间通讯有哪些?各有啥特点?
 管道和有名管道
 信号, 
 消息队列,随内核持续, 克服了信号承载信息少, 管道无格式字节流和缓冲区大小限制
 信号量, 同步和互斥手段
 共享内存, 最快的ipc
 套接字, 机器之间通信

3.写一个链表,实现单向链表的反转。
 

Node* reserve(Node* head)
{
if(head == NULL)
return head;
Node* p, *q, *tmp;
p = head;
q = head->next;
head->next = NULL;
while(q != NULL)
{
tmp = q->next;
q->next = p;
// 往后遍历
p = q;
q = tmp;
}
head = p;
return head;
}


4.求两个字符串的公共字符串。
 

算法思路:

1、把两个字符串分别以行和列组成一个二维矩阵。

2、比较二维矩阵中每个点对应行列字符中否相等,相等的话值设置为1,否则设置为0。

3、通过查找出值为1的最长对角线就能找到最长公共子串。

 

for()
{
for()
{
if( str1[i]== str[j])
{
if(i==0 && j==0)
dp[i][j] = 1;
else
dp[i][j] = dp[i-1][j-1] + 1;
}
else
{
dp[i][j] = 0;
}

if(maxLen < dp[i][j] )
maxLen = dp[i][j]
maxPos = i; // 最后取str1 的i的子串
}
}
return str1.substr(maxLen - maxPos + 1, maxLen);


5.数据库写SQL。。。(having + group by)
posted @ 2018-06-29 09:27  _扫地小道童  阅读(197)  评论(0编辑  收藏  举报