背景(面试问题在后面,可以直接跳过):
在霸笔的5天后,晚上11点多,百度hr打电话过来,通知我第二天去威尼国际酒店面试,感觉有点奇怪,担心是传销,就在校招的Q群招了一个伴过去。去到酒店后hr叫我去某个房间面试,当时看到名单有四个人,应该是霸笔一面的,安排的比较晚。接着去找房间,找了三遍才找到,商务区跟客房是分开两个电梯,折腾了30分钟到达面试官的房间。
面试点:
1.单例模式
2..线程
3.TCP UDP , 七层协议
4.C++一些机制
5.二叉树
5.智力题
面试过程:
面试官,20多岁,感觉是大学刚毕业,用的都是apple设备,估计是搞ios开发的。
面试开始, 面试官在mac上面找我笔试成绩,没找着。接下来以对话形式开展,面试官简称G。
G:"怎么没找到你笔试的成绩,你没有参加笔试吗?"
我:"有啊,不过是霸笔。" 当时笔试的题目除了最后一题系统设计题没把握,还有第一题的linux进程通信方法没有写全,其他都比较满意。
G:"那你知道你笔试成绩吗?"
我:"不知道",其实我也想知道
G:“那好” 接着在看我简历,大概翻了一番,然后在电脑上面敲。
G:"你来个自我介绍"
我:”bilabila。。。“,应该是G用来缓冲时间的,我之前也没准备,然后就随便说,说的过程中,他一直在看我简历,估计我说什么他都没有听到。
G:"你了解设计模式?" 我上面有写了解设计模式。
我:”单例模式、策略模式、工厂模式、组合模式。。。“,大约说了5,6个,其他不太常用的就没去回忆了,然后我说:”我看过那个 Head Frist 的设计模式那本书“
G:"嗯,那你写一下单例模式",接着在找笔和纸,当时没有找到纸,估计面试人也不多,也没有过多的准备。
我:”我有带”,然后用我的纸上面写。
大约3分钟后,写完,检查一下,然后交给G。
G:“有没有觉得什么问题?”,其实看到面经的有说技术官会这样问你,但是我想,会写的应该都会写对的答案上去,然后我想了一下,随便说了static上可能有不足。
G:"嗯...",我想当时是没有答到点的。接着G看我简历
G:”了解原子操作的概念吗?“
我:”不太了解..."后面是乱说,应该是往底层一个基本的数据操作。。。
G:"那你觉得这个new是原子操作吗”,指着我写的单例模式,我说如果我理解原子操作是正确的话,涉及到底层的应该是算。
G:"说一下进程跟线程的区别"
我:”进程里面有多个线程,通过主线程管理,线程之间公用栈,会竞争资源...“
G:”嗯...然后多线程会发生什么问题?“
我:”会引发死锁,同步,并发等问题...",之前看过操作系统,有相关概念
G:”怎样解决这些问题“
我:”通过锁,线程的执行顺序..."
G:"那你觉得你刚才所写的单例模式会引发什么问题?"
我:”会引起不同步问题,在if ... new 这里“
G:"怎么发生"
我:”多个资源申请的话, 建设,当两个线程同时调用这个方法的时候,第二个getInstance的时,第一个还没new 完,也会继续new ,然后就出现的new 问题”
G:"嗯..."
接着就,继续看简历。
G:“说一下TCP和UDP的区别”
我"都是位于传输层,TCP报文里面包含的信息较多,是稳定可靠传输,UDP信息较少,空间换时间,快速不可靠..." 之前较为系统地复习了计算机网络,还是比较有把握
G:“说了有哪七层网络协议”
我:”从上面往下说....",这个也是很快地回答出来了
看简历
G:"熟悉C++吗?“
我简历上面有些C++相关的知识技能
我:”能看懂..."
G:"那说一下C++多态的实现”
我:”通过继承和重载函数,我从java的角度来理解,C++的虚函数对应着java 的接口,实现虚函数,多重继承...",这个是往java那里套的
G:"说一下C++的多态机制"
我:”在一个基类的基础上,继承和修改或增加它的方法,实现虚函数...“ 这个还真不太了解,没把握
G可能看我不熟,好像没继续问了。
G:"熟悉二叉树吗"?
我:”还好”
G:"那如何计算二叉树的深度?"
我:”是平衡二叉树吗?“
G”嗯“
我:"logN+1" 应该是问完全二叉树,为下面埋了一个坑。
G:"怎么实现的“
我:”通过递归..."
G:"写一下"
接下来,我是按照完全二叉树的方向想得,用了个非递归,一直向左边挖,就是它的深度了。
在这个过程中,问我github(简历上有),然后在看,在过程中偷偷笑了一下。
4min后,交给他了。
G:"会有什么问题吗?"
我:”...”,没有方向,沉默了几分钟,“不知道”。回到来发现,的确是用递归实现的,取左右二叉树的深度,理解错了,把完全二叉树理解成平衡二叉树了,后来发现剑指offer上有这样的题。信心就降下来了。
G:"嗯..." 当时应该叫他给点提示的。
然后G问我概率题,随手拿了一个类似将军令之类东西6位数的密码,问我把它翻转过来时,看上去依然是正常得概率有多大。
我:”先从电子管那些编码找到对称的..."然后忽悠一下,在纸上写写,对称的数字有,0,1,2,5,6,8,9,之后就算,然后报答案,这个不太熟。
G:“翻转过来依然是正确的得概率”
然后我又在那里那里写,在完全对称的数字,0,1,8,再来一个镜面对称的话,除以2。当时没有限定时间,不过有点紧张,又没什么思路,然后就草草了结了。应该自己在纸上旋转验证结果的。然后发现还有情况没有想到。报G答案。
G:"说一下怎样得来的?"
然后就说对称的数字有0,1,8,再来一个镜面对称除以二。很少玩智力题。
G:"那我没有问题要问的了,你有没什么题要问“
----------------------------面试基本结束------------------------------------------------------
我:”我看你基本用的是苹果设备,没有做android的吗?”
G:"我是做IOS,开发的“
我:”之前听说,baidu做移动的既要懂android、又要懂ios,真的吗?”
G:"不是的,只要你基础好,可以都不懂“
我:”你们今年招多少人?”
G:"这个不一定,只要你优秀,我们都要”
然后我也没有什么问题了,面试结束
—————————————————————————————————
总结:
面了有半个小时,我多希望是一个小时,整个面试过程下来,感觉希望不大,二叉树那里的受挫了。可能是面试官是搞ios,android 的知识一个都没有问我。
其他的就是,简历有什么,他就问什么,中间肯定会有算法跟数据结构,itmian4这个网站对校招求职者的面试很大,之前一直在看july的《编程艺术》,原来剑指offer也是很有帮助。