“我 985 毕业生,凭什么和你专科生在一起,android 工程师面试题目和答案
有些人可能会说能力最重要,能力确实很重要,技术来说,无非就是熟练不熟练,入门先后而已,其实,学历只是代表你的过去,只要你有学习的能力,未来更加可以期待 。
抽空提高下学历是有必要的,最近几年一线落户越来越看重学历,但也不要无畏的认为学历可代表一切,除非你去创业,那么你牛逼,大家只会敬仰。
###三、数据分析在这里先给大家看张,不同学历的程序员收到的平均面试邀请数据统计图。从图中不难看出,单看收到的面试数量,专科、本科、硕士所收到的邀请数量相差不大,博士生收到的面试邀请反而较少。当然,这也许和他们的专业更精准聚焦有关系吧!
再看这张图,工作经验在 6-10 年的专科生平均年薪超过本科生!工作年限越长,反而低学历占了优势!
那么,这是什么原因呢?
因为相比于其他行业,IT 是个更注重应用的行业。在日常工作中,很多技术大牛们能够行云流水般打出一连串让人瞠目结舌的高级代码,更多靠的是大量严谨的逻辑锻炼和实践经验。而这些,靠一纸学历证书是获得不来的!
许多人也许在传统应试教育领域并未取得所谓意义上的成功,但这并不能说明他们能力不强,更多的只是方向和兴趣点不同罢了!
所以说,虽然学历在一定程度上代表了更优秀的学习能力,但在互联网高速发展的现在,在 IT 行业中,“学历至上”已经不是企业选择人才的唯一标准。比起一纸证书,企业更看重的是你编程水平的高低,是你在实际工作中能力的强弱。否则,即使你有一张敲门砖的文聘,也只不过是一个滥竽充数的南郭先生。###四、努力提升,技术为王道
永远别看低自己,更不要低估自己的潜力,每个人心里都有一个属于自己的千里马。
####逆袭微软
准备
之前导师跟我说他认识一朋友在微软可以帮我内推,我说能够内推苏州就好,上海或北京不考虑。后来导师询问了之后发现那朋友所在部门在上海,而且在苏州并没有分部,遂作罢。
所以微软直接走的正式批,投的 STCA 苏州的 software engineer。然后等到了统一的笔试,想着不能重蹈覆辙了。
面试
微软这次的笔试平台换成了 amcat,而且笔试全程不允许切换窗口、鼠标不能离开窗口,这对我们来说难度突然增大了,因为微软笔试就是几个算法题,不能跳出窗口、全程手撸代码就太恐怖了。
出乎所有人意料的就是微软今年的算法题突然简单了许多,可以说手撸代码完全没问题。一共五题,好几题就是简单几行代码就能写出来了,最难的一个就是换硬币了,其实就是非常明显的动态规划。所以笔试毫无压力,只有两三个测试用例没有通过,坐等面试通知了。
等了好几天后收到了微软苏州现场面试的通知,值得一提的是,同实验室好几个笔试做的不错的同学没有收到面试通知,所以微软恐怕不是单纯根据笔试成绩来发面试通知的。
之后就是去苏州微软现场面试了,签到的时候就看到签到表上密密麻麻全是南大和浙大的学生。面试一共四轮,在一个会议室坐着,面试官带出去面试的模式。微软的面试模式出了名是啥都不问直接白班写代码,这次也不例外。
一面
一面大概持续了半个多小时。面试官最开始就让我介绍我最闪光/特质的地方,上来就把我弄懵了,因为只准备过自我介绍。跟面试官说等我想两分钟后,我就开始说了,切入点就是我学习能力强,而且学的好;我主动说我本科是学的武器,花了接近两年的课余时间准备考研考上了南大,准备考研期间自学了计算机四大专业课和附属课程,在研究生阶段也学的很好之类的;面试官表示满意。
然后就问算法题了,问的是一道经典算法题,两个字符串大数相加,这道题是 LeetCode 原题,所以很快就写出来了。然后面试官扩展问如果是小数该怎么修改算法,我说把数的整数部分和小数部分分开处理,照之前的算法分别相加并处理完小数向整数进位问题后再拼起来,面试官表示赞同。然后问我对于小数还有没有别的方法,我说还可以直接把小数当整数对待,相加完成之后算出小数点的位置,再插入到字符串中就好了,面试官让我写出来,我就很快在纸上写出来了。紧接着面试官让我想想可以设计哪些测试用例来检查算法正确性,我写了几个测试用例。
再然后面试官问了我一个概率题,掷一个骰子 n 次,每次掷完骰子后,可以选择立即停止、以当前骰子的值作为结果,或忽略当前骰子的值,继续掷骰子,问用什么策略可以得到最大的数。这题我就犯难了,因为之前想过类似的问题还把自己绕进去了,这次也马上就把自己绕进去了而且越想越迷糊,最后干脆说每次掷的超过 3 就立即停止,不超过就继续掷;面试官马上就举例子说假设一共可以掷 9 次,掷第 1 次的时候就掷到了 4,那应该立即停止吗?我答不上来。
面试官提示了我两三次后说应该考虑后面还会掷多少次,我就明白不应该看前面掷的情况,应该根据后面还有多少次没有掷来计算后面掷骰子会超过当前值的概率,概率大于 50%就应该继续掷,随后写出了计算概率的公式。面试官对我的这个答案表示赞同,随后他补充说还可以用动态规划的思想来看。最后面试官跟我说我太紧张了,需要放松。
二面
二面差不多也是半个多小时。面试官最开始让我介绍了我做的项目,对我的科研项目很感兴趣,多问了一些,但没有深入。随后开始做算法题,主题是二叉搜索树,问了我搜索的时间复杂度,让我在纸上举例各种情况下(最好、平均、最坏)的时间复杂度,然后让我分析如何在二叉搜索树中寻找仅小于指定结点的结点(就是中序遍历的前驱结点),于是就跟面试官讨论了不同树的形状下如何寻找前驱结点,然后面试官让我写出这个算法。
我想了想其实中序遍历就能搞定,于是默不作声写了个非递归逆中序遍历,然后给面试官看,并解释了原理;然而这并不是面试官想要的结果,面试官希望我通过结点父子关系来寻找前驱结点,而非遍历的方式。我想了一下,然后跟面试官说,这样每个节点就必须有一个 parent 指针指向其父结点,面试官说可以有 parent 指针。
然后我就顺着之前讨论的各种情况一一写出了寻找前驱结点的方法。面试官看了我写的代码表示赞同,但跟我说其实我的代码还可以精简,其实就是两种情况不断向上遍历判断。然后面试官让我设计测试用例,来检查我写的算法的正确性,我很快写了几个。然后让我再之后面试官简单问了我如斐波拉起数列的问题,就愉快结束面试了。
三面
三面也差不多半个小时。三面面试官也是先让我介绍项目,我介绍了我的科研项目,他问了一些性能参数后,问我有没有考虑到手机耗电问题,我说没有,主要因为这个领域都不做这个,他就谈了谈他对耗电的看法,我
表示赞同。然后面试官问我前两轮面试有没有问英语,我答没有,面试官就说从现在开始我们用英文交流,所以接下来全程英语了。然后就是做算法题了,不同于前两轮面试是在纸上写,这次直接在墙上的白板写了。问的是 LeetCode 上的原题——判断镜像二叉树(LeetCode 101),这题我早有准备。
评论