9月28日,百度2014校招-武汉站-系统分析师
10月2日,暴风影音2014校招笔试
1、合并两个已经排序的单链表为一个排序的单链表,相同内容只保留一个
如:单链表a:1->2->3->4
单链表b:3->4->5
输出:1->2->3->4->5
2、编写程序,在原字符串中把尾部m个字符移动到字符串的头部,要求:长度为n字符串操作时间复杂度为O(n),时间复杂度为O(1)。
如:原字符串为”Ilovebaofeng”,m=7,输出结果:”baofengIlove”。
点评:还是类似编程艺术第1章左旋字符串:http://blog.csdn.net/v_JULY_v/article/details/6322882。
3、暴风影音的片源服务器上保存着两个文件a和b,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出a,b文件共同的URL。要求:算法设计。
点评:上述第3题等海量数据处理面试题,请参见此文第第一部分第6题:http://blog.csdn.net/v_july_v/article/details/7382693。
关于linux内核的几个面试问题:
1、Linux中主要有哪几种内核锁?
2、Linux中的用户模式和内核模式是什么含意?
3、用户进程间通信主要哪几种方式?
4、有哪几种内存分配函数?
微软一面:输入两个数,相加求和,二进制输出。
阿里巴巴面试:
阿里的log文件如下,有三个字段:time(登陆或登出时间点)+uid+login或logout,每条记录按时间顺序排列。问题如下:给定一个时间点T,统计在线人数。
点评:参考分析请见http://blog.csdn.net/tnndye/article/details/12784237。
10月8日,百度移动开发-上海站笔试/面试题
1、三色球排序的问题,相同的球放到一起,让你按顺序输出红白蓝三种颜色的球,可以用012来表示,要求只能扫描一次数组。
点评:荷兰国旗问题,参见此文第8小节:http://blog.csdn.net/v_july_v/article/details/6211155。
2、实现C的strstr
点评:手写字符串处理相关函数是面试中极为常见的一类题型。
功能:从字符串str1中查找是否有字符串str2,
-如果有,从str1中的str2位置起,返回str1中str2起始位置的指针,如果没有,返回null。
给两份参考代码,一份是C代码:
[cpp] view plaincopyprint?
char *mystrstr(char *s1 , char *s2)
{
if(*s1==0)
{
if(*s2)
return(char*)NULL;
return (char*)s1;
}
while(*s1)
{
int i=0;
while(1)
{
if(s2[i]==0)
return s1;
if(s2[i]!=s1[i])
break;
i++;
}
s1++;
}
return (char*)NULL;
}
char *mystrstr(char *s1 , char *s2)
{
if(*s1==0)
{
if(*s2)
return(char*)NULL;
return (char*)s1;
}
while(*s1)
{
int i=0;
while(1)
{
if(s2[i]==0)
return s1;
if(s2[i]!=s1[i])
break;
i++;
}
s1++;
}
return (char*)NULL;
}
一份是C++代码:
[cpp] view plaincopyprint?
//copyright@caopengcs 2013/10月
class Solution {
public:
char *strStr(char *haystack, char *needle) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int i,j;
for (i = j = 0; haystack[i] && needle[j];) {
if (haystack[i] == needle[j]) {
++i;
++j;
}
else {
i = i - j + 1;
j = 0;
}
}
return needle[j]?0:(haystack + i - j);
}
};
//copyright@caopengcs 2013/10月
class Solution {
public:
char *strStr(char *haystack, char *needle) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int i,j;
for (i = j = 0; haystack[i] && needle[j];) {
if (haystack[i] == needle[j]) {
++i;
++j;
}
else {
i = i - j + 1;
j = 0;
}
}
return needle[j]?0:(haystack + i - j);
}
};
3、写一个memmove的函数
点评:手写常见字符串处理函数是面试官很喜欢考的一类题型。
10月9日,暴风影音校招研发笔试
1、给定字符串A和B,输出A和B中的第一个最长公共子串,比如A=“wepiabc B=“pabcni”,则输出“abc”。
2、TCP建立连接的3次握手过程?若最后一次握手失败,会怎样处理?
原文转自:http://blog.csdn.net/v_july_v/article/details/11921021