关于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;

  }