九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试五十题(3)

发表于:2013-10-23来源:Csdn作者:v_JULY_v点击数: 标签:软件测试面试题
9月28日,百度2014校招-武汉站-系统分析师 10月2日,暴风影音2014校招笔试 1、合并两个已经排序的单链表为一个排序的单链表,相同内容只保留一个 如:单

  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