首页 > IT大厂面试经验分享 —— 二分法
头像
私坊茶话
编辑于 2020-06-19 10:29
+ 关注

IT大厂面试经验分享 —— 二分法

二分查找是CS课程中最基础的内容,却也是面试官们最喜欢问的题目。我第一次被面试官问到 “请告诉我什么是二分法?” 的时候,非常愉快地甩出二分法的定义 “二分法就是给一个数组,如何确定某个元素是否存在于数组中“,结果当然是被面试官愉快地甩出了候选人名单 :)

这个问题看似简单面试官却在心里将面试者的水平分了三六九等,只靠背诵一句定义,显然不能吸引面试官的注意。

当面试官问你二分法问题时,如何回答比较好我用一次次踩坑的血泪史,总结出高分回答分享给大家

60分的答案

面试者水平:熟悉“二分法”算法流程,教科书式回答。

取数组中间元素,
a. 如果中间元素比目标元素大,则目标元素在数组前半部分;
b. 如果中间元素比目标元素小,则目标元素在数组前半部分。
c. 不停二分折半数组,直到找到目标元素或者找不到退出。

面试官 OS:还行吧,再考察考察,可以的话给个普通岗位试下。

80分的答案

面试者水平:了解二分法的应用前提、与复杂度。

1. 假设给定的是有序单调递增的数组,
2. 取数组中间元素,【接上文】
3. 由于,
a. 一开始数组里面有n个元素,
b. 折半一次还有n/2,
c. 折半k次之后是n/2^k
d. 所以二分法复杂度
a). 时间复杂度是O(log n)
b). 【可选回答】空间复杂度是O(1)。

面试官 OS:可以啊,不错不错,让项目组资深员工老王带一下,是可造之才。

90分以上的答案

面试者水平:真正掌握二分法基础原理。

1. 二分法的本质是分治法,即
a. 对一个规模为n的问题,可以通过分治将其分解为k个子问题
b. 子问题与原问题形式相同、且相互独立
c. 可递归解决子问题,将合并子问题的解合并后可得到原问题的解
2. 以二分为例,
a. 给定长度为n的有序数组,通过取中间元素将其分解为2个子问题
b. 数组前半部分与后半部分,为原问题的两个长度为n/2的子问题
c. 由于可明显排除一个子问题,所以只需递归求解另一个子问题,并最终得到原问题的解
面试官 OS:这个人才一定要留住,一会马上让人事小吴过来,薪酬和福利尽力满足对方需要。



看似最简单的问题,不同的回答却高下立判。现在总结出来的高分答案,都是当年求职一步一个坑摸索出来的血泪之谈。

回过头想想,如果那时能有业内资深学长学姐的指点和帮助,一定能少走很多不必要的弯路。所以我和我的同伴们希望能将经验和知识分享给学弟学妹们,让大家向心仪的互联网大厂靠近一点、再近一点…
所以,我们成立了【私坊话IT】—— 专注于IT行业高端岗位的求职培训品牌,真心地,希望能在你的圆梦路上,助你一臂之力。


我们团队成员都是来自

国内外科技大厂的资深工程师

毕业于全球Top30、国内Top5高校

当年均OFFER拿到手软

混迹于科技圈多年

现均为各领域专家、团队负责人

掌握着专项领域最前沿技术

积累了丰富的工作与求职经验

能给予你最透彻的解析


更多、更即时的干货分享在我们的公众号【私坊话IT】,我们在大厂等你~


更多模拟面试

全部评论

(0) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

近期精华帖

热门推荐