引言
盼望着,盼望着……今年终于轮到我找工作了,还深深记得去年跟在师兄后面各种打酱油的经历,当时觉得找工作好难啊,怎么面一个败一个,以后还能找到工作不?
不过当时的失败也是理所当然的,那时候没有做任何准备(连进程间有几种通信方式这样老掉牙的题我都不知道),没有任何找工作的经验,甚至一个简单的自我介绍都吞吞吐吐的。
经过一年时间的磨练,特别是近几个月的强度知识吸收,感觉个人在能力和知识储备方面有了质的提高,这大大提高了我的自信心,也让我在这个秋季的求职生涯最终以较满意收场。
截止目前为止,找工作总算告一段落。初次找工作,只投了前面的几家公司(有百度、阿里、美团、搜狗、华为等),今年比较幸运,面的几家公司都成功拿到offer,也算是初战告捷。这些公司的招聘结束后我就没再参加后面的一些大型互联网公司了,比如奇虎360、网易、爱奇艺、金山等等,不像我的一些同学,手里offer多的都拿不动了,也有满意的了,可还是满怀干劲的参加后面的招聘,真心不知道他们的精力和耐力从何而来,可能是他们想成为传说中的offer帝和面霸吧。我个人无喜于那些称谓,既然有了较满意的offer就不想再耗费太多的精力去争根本不会考虑的offer,也可能是自己的惰性所为……
OK,废话到此为止,下面简单回顾下自己在百度面试过程中的一些题目,给还在找工作或将来要找工作的同学一个浅薄的参考。
百度面试题
一面(1 hour):
1. 面试官从简历里抽了一个较感兴趣的项目,让把项目简单介绍了下,针对项目问了几个技术问题
2. 介绍Java中垃圾回收机制,程序员平时需要关注这个吗?为什么?请举例说明。
3. 数据库隔离级别介绍、举例说明。
4. override和overload的区别。
5. 求二叉树的最大距离(即相距最远的两个叶子节点),写代码。
6. 两个栈实现一个队列,写代码。
7. 你觉得你的优势是什么?有什么技术薄弱点吗?
8. 目前手上有offer吗?
二面(40 minutes):
1. 详细介绍研究生期间的小论文项目。
2. 求二叉树的宽度,先简介思路再写代码。
3. Hashmap、Hashtable和cocurrentHashMap的区别,要讲出它们各自的实现原理才行,比如Hashmap的扩容机制、cocurrentHashMap的桶分割原理、多线程安全性。
4. 进程调度算法,有哪些算法比较难实现?
5. linux下如何修改进程优先级?(nice命令的使用)。
6. linux下性能监控命令uptime介绍,平均负载的具体含义是什么?建议看server load概念。
7. linux下如何调试程序?说到gdb,具体如何调试?如何查看core文件中的堆栈信息等(bt指令)。
三面(1 hour an d twenty minutes):
1. 介绍我研究生期间的论文,讲的很详细,每个点具体采用的技术、实现方法等,花了较长时间。
2. 打印二叉树两个叶子节点间的路径,写代码(汗,百度这么喜欢问二叉树)。
3. 字符串中第一个只出现一次的字符,如何优化算法使得遍历次数更少?
4. socket编程相关,如果服务器这边调用write写了100个字节的数据,客户端想要获得这个数据,是直接用read系统调用,参数也是100吗?
5. 百度新闻缓存预算问题:一般为了追求时间性能,都需要缓存一些新闻数据,你怎么计算所需预算?然后申请需要的主机……
6. 多线程的适用场景是什么?为啥要用多线程?
7. 问是否会go语言,……
8. 为啥对技术感兴趣,一些相关问题讨论。
9. 聊北京、谈offer。
最后面试官说像计算机体系结构、操作系统这样的书一定要看国外的,国内的有时候会误导人。
总结
三面都是技术面,总体下来没有特别难的题目,从我的面试情况来看,百度这次非常看重面试者对二叉树的掌握情况,还有所做的项目详细介绍。后面我会继续分享自己在面试过程中的一些个人经验和技巧。