实习面试问题总结
20130803,上海
思杰:
笔试:++、--和*(解引用)运算符的优先级,双向链表的插入和查询写代码。
面试:“你简历上看没什么项目啊。。。”那时简历做的是不行,格式不好,项目经历写的也粗糙。后面写了函数指针的定义方式、刚看的,没问题。然后问我函数指针有什么用,没答上来,说凡是用函数指针的地方都能用函数名表示(貌似在哪儿看的这句话,是正确的,但是误导我很大。。。),然后问我回调函数是什么?其实这已经明显的的提示我了。。。悲剧的是去年看到过回调函数这个概念,后来也没查,就放过去了。。结果这个问题又悲剧了。。最后问我指针和引用的区别,唉,难度一直在降低。。悲剧的是我也没答好。期间还问工作的2年做了什么。。。这个问题在以后的面试前一定要想清楚怎么答。
总结:最先面的一家,基本炮灰了。当时3月中旬,还没开始准备,也不知道问什么,也不知道自己哪里不会。
IBM:
Linux运行级别,cache一致性检测,(貌似挂了)
非递归后序遍历二叉树。快速排序,求中位数。(最后来的这个)
Intel:
单片机从上电到运行C代码,都做了什么工作(挂了)
1、初始化列表和构造函数内初始化有什么不同:const变量必须在初始化列表初始化,其他变量可以在初始化列表中初始化,也可以在构造函数体内初始化,但是,在函数体内初始化,其意义是先默认初始化(在初始化列表中),然后再进行赋值。效率降低。
2、C中的回调函数和C++中的回调函数有什么不同?C++可以使用仿函数的方式(不确定),也就是重载()。【详解】
SAP:
笔试:矩阵的行和列都是递增的,怎么找给定的元素在不在矩阵中;▲
给定一个数组和一个数N,问数组中是否存在2个数的和为N。怎么做才能在O(n)的时间复杂度(可以空间换时间)?▲
SAP南京创新中心,先去霸面,然后补充笔试,笔试内容和杂,C/C++ | Java 、SQL、HTML、javascript、网络等等。基本只做了C/C++和网络。交卷不到1h短信给了offer。后来没去。其实在南京还是不错了。
Cisco:
1、正则表达式,贪婪/非贪婪匹配
2、智能指针,内存管理▲
3、虚函数概念,什么时候使用虚函数
4、单链表逆转,给定一块内存,生成随机静态链表(写代码)
5、快速排序(描述思想,不要求写代码)
6、图的路径搜索(给定源点和目标点),打印每条路径。使用哪些数据结构,不同路径的公共节点等(要写代码,但是由于时间关系只写了数据结构)▲
总结:最艰难的一场面试,从10点到12点多。现场写了2个代码,一个是单链表逆转,后面关于随机的那个写的暴力解法,面试官开始不说这样不好,然后现场比较淡定的写出来了,才说这样效率低。在他的提示下回答出了打乱数组即可。
当时已经拿到IBM存储部门的开发offer,思科这个部门说是做芯片功能验证,主要工具是c++和perl。犹豫了很久,拒掉了。非常后悔。。。
思科另一个部门:【大概3月份投的,6月份通知去面试。。】
1、比较简单的算法,(现场在终端下编写并运行)
2、const 的用法(写代码测试)
3、static的用法(并发问题)
4、socket编程中的select,说下原理?这个一点不会▲
5、单链表反转(代码)
6、堆排序的过程(建堆,插入,删除)
7、冒泡排序,现场写代码
8、host1将一个ip包发给host2,详细解释包的发送过程。(数据包的头部变化,IP到MAC的转换,使用的协议,协议的运行过程。。)▲
9、如何通过dump调试程序?最后一个问题,当时没懂什么意思,之前也确实没接触过。程序崩溃掉后会有core dump,然后通过这个信息了解程序在何处down的。不懂。▲
最后用英语进行项目介绍,基本的adjust parameter这样的单词当时都没想出来,说口语太差,可能没法交流。。。(悲剧了)
腾讯:
笔试:
▲1、已知一个数组a[N],构造一个数组b[N],构造规则:b[i]=a[0]*a[1]*a[2]...a[N]/a[i];
要求:
1、不可以使用除法;
2、时间复杂度为O(n),空间复杂度为S(0);
3、除遍历使用的变量外,不可以使用其它变量
▲2、问题描述:
小明在[1,100]之间猜数字。规则如下:
1、如果猜的小了,会提示小明猜的小了。
2、如果猜的大了,只会提示对错,不会提示大小。
3、如果有一次猜的大了,以后猜的无论大小,都只会提示错误,不会提示大小。
问:至少几次可以猜对数字?第一次应该猜那个数字?
微软:
笔试题目已经发过了。这次说面试。就2个题目。
1、并发程序的调度问题
一个任务分解为若干个子任务,除某些任务外,其他任务必须满足一定条件(它前面的任务结束后)才能开始。结构类似于一个公司的组织机构图,然后自己定义数据结构,写一个调度算法,使整个任务的完成时间最短,效率最高。
2、一个大小为n的数组,元素范围为1-n,但是其中一些元素有重复,另一些元素则丢失了。要求找出重复的元素和丢失的元素。最后要求优化到时间O(n)、空间O(1)的复杂度。
3、上道题目写的时候忘记stl中bitset类怎么用了,于是面试管让我自己写一个bitset类,能够实现如下操作:
bitsetbs(20);
bs[12] = 1;//第12位置位
bs[3] = 0;//第3位清零
盛大:
随机数问题和动态规划。(显然悲剧,都是之前没玩过的。。。)
▲是还没有解决或者不懂的,后序日志慢慢补充。