找工作总结

转载于:http://liangqiu.blog.51cto.com/4461709/1080942


今天面完了最后一家公司,两个多月的找工作生涯也算画上了句号,因为之前答应张坤说等我确定offer了一定给你弄一个求职攻略(其实上一届的某师兄貌似也说过这样的话,只是之后没有兑现),所以今天决定小小的总结一下这两个月走过的路。


因为面过的公司也有限,所以单就我面过的公司大概模式做一个小结。

1、爱立信(拿到Offer):悲剧的一次笔试和面试,在逻辑和英语的笔试中放弃了微软的笔试,面试又不得不放弃了google的笔试,然后拿到offer了也没去,不过当时普遍觉得今年形势不好,先拿一个offer再说,也没办法。面试大概是3个小时。两个小时的技术面,一个小时的Manager面。技术面就是聊聊TCP/IP、Linux Kernel、数据结构和算法。好像Kernel聊了蛮多的,因为面试官也是今年刚毕业的,也正在看深入理解Linux Kernel。写了两个程序,第一个是atoi,第二个是在一个无序的数组中是否能找出两个数的和等于一个数N。难度不算大。


2、大众点评(拿到Offer):大众点评的笔试是40分的,逻辑题20分,算法20分。算法感觉不是很难,第一道是求出一个数的所有素数子因子;第二道题是求树的高度;第三道题是求一个字符串的最长不重复子串…面试的时候写的是单词倒序(I am a boy变成boy a am i),第二轮的时候是让我写出笔试题第三题的优化算法,刚开始想半天没想出来,幸好最后想到了可以用哈希(哈希是真正的面试和笔试中的大杀器)。在大众点评时最尴尬的是每一轮都说你之前做的偏硬件的,然后我们是互联网公司,那什么职位比较合适你呢?汗。


3、腾讯(第二轮):悲剧的一次面试,其实笔试觉得做的挺好的,附加题两道也做出来了,但是好像腾讯今年就没打算招人,第一轮让我写了一个彩票的程序,还有求64位的整数中有几个2进制1;第二轮的时候就一直在戏弄我,问了一些非常tough的问题。好像最后也没有太多人拿到它的offer,反正面试是怪怪的公司


4、百度(第三轮):百度的面试是典型的互联网公司的面试风格,节奏很快,第一天第一轮和第二轮,第三天第三轮,第四天发offer。可惜没有熬到最后。第一轮主要是写了两个程序,第一个是一个数组的最大连续子数和,第二个是单链表反转;还问了一个shell脚本将文本中矩阵倒置,因为不大会shell就直接和他说了可以用sed做;第二轮写了比较两个树是否相等,堆排序,那个面试官好像一直在写什么,所以第二轮很快,写完两个程序,问了两个问题就结束了。悲剧的最后一轮,因为我投的是运维,最后一轮是运维的director直接问的,问题的焦点一定在为什么选择做运维?为什么选择百度?因为之前一直是设备商和芯片公司的经历,所以一直认为我不合适去百度做运维。这两个问题是面试的时候一定要想好怎么回答的。


5、英伟达(拿到offer):好像笔试也不是很难,一个写程序的单词倒序,semaphore和mutex的区别,还有两个智力题(cracking the code interview里面都有),还有一些是嵌入式需要了解的0X10道面试题。面试的时候大部分时候也是写程序,直接在电脑上写,然后面试官检测,还好题目不难,itoa,求整数的二进制1个数,然后问了一些linux kernel的问题(IPC,同步原语,cache),然后深圳那边面的时候也是写了两个程序,一个是求出3*3的方格,将1-9的数放进去,使得每行,每列,每对角线值都相等,这个题真心写到爆…然后一个是求出两个字符串都含有的字符。反正主要也是写程序为主。


6、思科(通过笔试):思科的笔试是比较难的,又全又细(五门:C/C++, JAVA, LINUX, Data Structure, Network)。难得有面试机会,但是却是被挂了…思科的节奏是一天面完,一共四个人(好像有些team是两个),每个人半小时:分别是嵌入式知识、问简历(问的极深,简直问道死…)、C语言知识、经理面。嵌入式的全是硬件、驱动的知识,DMA的原理,什么是嵌入式系统,RISC和CISC的区别,cache和DMA的一致性…直接悲剧;第二个人则问的非常tough,你做的每一个项目都给你提出了一大堆的问题问怎么解决的;第三个人问的是C语言的基本问题,关联到数据分别存在什么地方,堆栈溢出问题,最后限时十分钟写一个位运算数组的置位和清除;最后是经理面,先出了一个网络问题,在一台路由器中有两台PC主机(下方有两个小小的IP地址,第一个10.0.0.X,第二个是192.168.0.x),问两台主机Ping不通,没回答出来,后来一想不就是两个内网地址么。总的来说思科是面的最差的一次,也因为之前已经拿到了英伟达的offer,心态瞬间变了,真心可惜了。


7、IBM(两轮):IBM是没有笔试的,直接通知面试,面试也比较简单,第一轮是也是问一些IPC,同步原语,进程和线程的问题,然后还是写了一个找数组中两个数之和等于一个特定数的程序;第二轮的时候是经理面,纯英文,悲剧,因为他之前是在cisco做sip协议的,所以把这问的够惨,接着便直接怀疑我一直都是酱油的。


8、EMC(拿到Offer):EMC的笔试是我做过的最难的(包括C++,JAVA,LINUX,Network,Database简直包括所有的知识),然后有一道程序题是写扫雷程序。面试的时候是三人三面,每个半小时,第一个人主要聊的软件工程,SCRUM等;第二个人是经理面,纯英文,考察的应该是交流能力和英文吧(因为没有问啥技术问题);第三个是技术面(非典型技术面),随机问问题的,讲讲new和malloc的区别;tcp的主动关闭,被动关闭,timeawait;怎么申请大内存,反正就是想到什么就问什么。


9、大摩(电面):哎,纯英文技术面,问的问题也都不难,但是英文太难了,主要问线程和进程的区别啊,栈和队列的区别,排序的时间复杂度,OO的理解,知道的Linux命令等等,因为是电话,本来就听不懂,声音效果还不好,所以各种pardon,sorry…技术真心不难,但是英文真心难。


10、Vmware(未知):笔试也算较难的,包括C++、database;然后有两道编程题,一个是两分查找有重复数组;第二个是malloc的对齐分配。面试和EMC大概相同,只是英文面的时间从半小时缩短到20分钟。搞笑的是面试的时候居然又把二分查找写了一遍


上面就是所有我面试的公司。基本外企对英文有一定的要求,特别是大摩和EMC;互联网公司一般都对数据结构和算法要求较高。如果是设备公司和芯片公司,一定要对Linux内核有一定的了解,最起码知道IPC和同步原语,进程和线程。互联网公司最好能知道大数据的排序啊,查找的处理。


推荐的书籍(由于我找的大部分是设备公司和芯片公司,所以对互联网公司不一定有相同的作用),按重要性排序:

1、Cracking the coding interview

所有的题都要弄清楚,所有的题都起码要写一遍程序;我基本每次面试前一天都会看一下这本书,最神奇的是――好多原题。


2、算法导论

最好能把前26章都看一遍,把所有伪码写成擅长的语言


3、深入理解Linux内核

如果是面嵌入式的职位,那这边书一定要看


4、剑指Offer

有很多程序题


5、C语言程序设计

因为我擅长的是C语言,所以一般就是看这本书了


6、程序员面试宝典

基本的面试题


考的比较多的程序题:

1、atoi

2、itoa

3、快排

4、单词倒序

5、整数中二进制1的个数(循环和查表都经常问)

6、各种hash和bitmap的算法

7、在一个数组中找两个数的和是否等于数N

8、string copy和memory copy

9、各种递归的算法


算法题如果是数组的话,没有排序的都先想想如果排序有没有什么规律;所有算法都先想想能不能用hash和bitmap解决,能不能递归来做,很大概率考这两种类型。


问的比较多的问题:

1、你为什么选择我们公司,你的经历更适合去设备公司(这个问题和下一个问题可能直接决定你能不能拿到这个offer,很重要)

2、为什么选择这个职位,你的经历更适合测试

3、技术上遇到过什么困难,怎么解决的

4、英文自我介绍

5、职业规划

6、进程间通信

7、同步原语

8、进程和线程的区别

9、C语言的不同变量分别存在什么地方

10、kalloc和valloc的区别

11、static和volatile的作用

12、输入一个网站会发生什么

13、TCP的三次握手,四次断开,拥塞避免

14、ping、traceroute、dhcp的原理



你可能感兴趣的:(面试)