本文来自小伙伴 @
(*^_^*)
投稿,投稿的小伙伴后面送书你先选,不满意下次还是你先选。
以下为正文,采用小伙伴第一人称。
下午两点百度科技园2号楼进行面试,
上来就自我介绍,之后 HR 就开始问我项目的事情,因为我简历上的项目都是区块链相关的,HR 对这方面了解的不是很多,所以没有怎么追根到底地问。
据说,一般 HR 会对简历上写的项目追根到底的问,问你这个项目是怎么做的,用了那些东西,这些东西的原理是什么。
一面
1、算法&编程语言
HR:如何用一行代码实现1+2+3……+100?
我:
1 | print((1+100)*100/2) |
这里是用 Python 实现
HR: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
例如输入一个长度为 9 的数组 {1,2,3,2,2,2,5,4,2}。由于数字 2 在数组中出现了 5 次,超过数组长度的一半,因此输出 2。如果不存在则输出 0。
我:遍历统计,记录每个元素出现的次数,然后找出出现次数超过一半的那个数
1 | int traverseEach(int *array,int number) { |
这里是用 C 实现,小伙伴很秀!
HR:能不能来个简单一点的方法?
我:可以进行排序,因为这个数出现次数超过了一半,所以中间那个数肯定就是要求的了
1 | void maopSort(int *array,int number) { |
这里是用 C 实现
HR:那万一这个数没有出现一半呢?怎么办?
我:那遍历时,进行比较,从列表中移除两个不相等的数字,一直到只剩下最后一个数,那个数就是所求
1 | int neutralize(int *array,int number) { |
这里是用 C 实现
HR: 一行代码实现列表的遍历
我:
1 | print([[x for x in range(1,101)][i:i+1] for i in range(0,100)]) |
这里是用 Python 实现
HR: 一行代码实现将 1-N 的整数列表以 3 为单位分组
我:
1 | print([[x for x in range(1,101)][i:i+3] for i in range(0,100,3)]) |
这里是用 Python 实现
HR:回文知道吧,你写一下代码实现一下。
我:
1 | while True: |
这里是用 Python 实现
HR:你能用python的字符串切片实现一下吗?
我:
1 | def reverse(text): |
这里是用 Python 实现
2、数据库相关
HR:数据库操作,从 students 表里面,查询一下相同名字的人数
我:
1 | select name,count(*) from students group by name having count(*)>1 |
3、Linux相关
HR: Linux命令熟悉吧,你写几个,然后讲一下,拓展一下
我:ls、find 、cd、tree、cp、mv、pwd、tar、mkdir、rmdir、gzip、ps、kill、crontab、free、chmod
然后 HR 挑了几个来问我,用这个命令实现什么什么功能,要加什么参数
HR:说下计算机网络的OSI七层模型吧
我:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
4、测试相关
HR:你看我们那个百度首页,那个输入框,你设计一下测试用例
我:针对输入框的话:输入的字符串,以及一些奇怪的字符,输入是一张图片,是一个文件呢
针对页面的话:窗口放大缩小,字号放大缩小、编码格式
针对整个网站的话:不同的浏览器、不同的操作系统、不同的屏幕分辨率、多人同时访问
来,wen我
HR:你有什么想问我的吗?
然后我就随便问了下,工作具体是干嘛的
就这样一面结束了,然后 HR 叫我再等等,她去叫二面的 HR 过来
二面
上来 HR 就介绍了一下她自己,然后再介绍了一下我所应聘的部门以及工作岗位,然后叫我自我介绍一下,然后我又重新复述了一下自我介绍,然后 HR 又是针对我的区块链项目无从下手,只是问了一下表面,然后没有深入。
1、算法实现
HR:不借助第三个数实现下a,b值的互换
我:
1 | a=a-b; |
HR: 有更简单的方法吗?
我想了好久,还是不知道,然后 HR 告诉我了,用 python
1 | a,b=b,a |
2、Linux相关
HR: 你写一下你熟悉的Linux命令吧。
我(心里暗暗窃喜):ls、find 、cd、tree、cp、mv、pwd、tar、mkdir、rmdir、gzip、ps、kill、crontab、free、chmod
HR:你知道 socket 吧,在 linux 上启动一个,然后你要怎样查看它的端口
我想了好久,答不出来。
HR:
1 | netstat -nltp|grep XXX |
3、编程语言
HR:我看你这写着学过 C++,我们这个岗位后端就是用的 C++,你说说内存泄漏的几种情况吧
我:C++是大二学的,学完就没有怎么用过了,所以现在我完全不会
HR:
1、在类的构造函数和析构函数中没有匹配的调用 new 和 delete 函数
2、没有正确地清除嵌套的对象指针
3、在释放对象数组时在 delete 中没有使用方括号
4、指向对象的指针数组不等同于对象数组
5、 缺少拷贝构造函数
6、缺少重载赋值运算符
7、没有将基类的析构函数定义为虚函数
4、操作系统
HR:你这写着你也学过操作系统,那你说一下Linux中的进程通信吧
我:。。。。。。。
HR:管道、消息队列、信号量、共享内存、套接字
HR:那你说一下死锁,以及怎么解决死锁问题
我(终于有我会的了):死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进
死锁产生的原因:
1、系统资源的竞争
2、进程运行推进顺序不合适
产生死锁有四个必要条件:互斥条件、不可剥夺条件、请求和保持条件、循环等待条件
解决方法:
死锁避免,先尝试分配资源,如果分配后可能出现死锁,那就不分配
死锁预防:破坏不可剥夺条件、破坏请求和保持条件、破坏循环条件
来,wen我
HR:你有什么想问我的吗?
我:这边面试什么时候出结果,三面还是技术面吗?
二面就这样结束了
我因为没怎么准备,所以面得很烂,尤其是二面的时候,连续几个问题没答上来,HR 估计都要放弃我了。一面面了一个多小时,二面大概就四十分钟左右。
结果:在我刚上西二旗地铁站,就收到百度发来的拒绝邮件。
小编说
总的来看,前两面还是不难的,简历上写的都可能被问到,谁让你谢了呢。
无奈我们的小伙伴最近主力备战考研,也是无心准备,要是好好准备的话,肯定不是这个结果。