关于google的最新笔试面试经验

更新时间:高考猫

  我本来发文的目的是说下笔试题,想想还是不说了,想知道的可以私下跟我讨论,题目不难,全做对也不容易,不过错个两三道基本也就kaka了。考察得很全面,算法+数据结构+操作系统+编译原理+网络+离散数学,还居然考了个中断。

  笔试之前的宣讲会,略有收获。获知Google全球共有员工12000左右,其中总部8000左右,而google中国,北京195,上海45,台北35,而在一年前这一数字分别是北京100,上海20(这个没记准确),台北10。我得到的唯一结论:google中国还差的远啊,不知道开复能把它做成什么样子,应该不会撤摊子吧。

  这是第二次笔试,作个记录,以备日后参考,题目另行记录。

  1、 两个二进制数的异或结果

  2、 递归函数最终会结束,那么这个函数一定(不定项选择):

  1. 使用了局部变量

  2. 有一个分支不调用自身

  3. 使用了全局变量或者使用了一个或多个参数

  3、以下函数的结果?

  int cal(int x)

  {

  if(x==0)

  return 0;

  else

  return x+cal(x-1);

  }

  4、 以下程序的结果?

  void foo(int*a, int* b)

  {

  *a = *a+*b;

  *b = *a-*b;

  *a = *a-*b;

  }

  void main()

  {

  int a=1, b=2, c=3;

  foo(&a,&b);

  foo(&b,&c);

  foo(&c,&a);

  printf("%d, %d, %d", a,b,c);

  }

  5、下面哪项不是链表优于数组的特点?

  1. 方便删除 2. 方便插入 3. 长度可变 4. 存储空间小

  6、T(n) = 25T(n/5)+n^2的时间复杂度?

  7、n个顶点,m条边的全连通图,至少去掉几条边才能构成一棵树?

  8、正则表达式(01|10|1001|0110)*与下列哪个表达式一样?

  1.(0|1)* 2.(01|01)* 3.(01|10)* 4.(11|01)* 5.(01|1)*

  9、如何减少换页错误?

  1. 进程倾向于占用CPU

  2. 访问局部性(locality of reference)满足进程要求

  3. 进程倾向于占用I/O

  4.使用基于最短剩余时间(shortest remaining time)的调度机制

  5. 减少页大小

  10、实现两个N*N矩阵的乘法,矩阵由一维数组表示

  11、找到单向链表中间那个元素,如果有两个则取前面一个

  12、长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可以用除法。要求对算法的时间复杂度和空间复杂度作出分析,不要求写程序。

中国点击率最高的一篇文章 !