看过不少公司的面试题,也参与过不少公司的面试,发现大厂的面试题更加具备表明性,虽然如今不少大厂的面试官也懒得本身出题了,不过经验老到的他们仍是更清楚如何高效率地考察面试者。程序员
而小公司的面试题每每五花八门,有的更加贴近公司自身业务,但愿面试者结合业务给出解决方案,有的干脆直接从书本上找题目,考察一些死记硬背的概念,固然,有的初创公司逼格很高,则会搞一些高难度的面试题,角度刁钻,经常让面试者猝不及防。面试
既然大公司的面试题具备共性,那么咱们也不妨来尝试探讨一下,大厂面试题到底考察面试者哪些方面的能力。算法
基础知识无疑是大厂面试官最喜欢考察的东西了。若是面试者的基础都不扎实,那么创建于基础知识之上的实战能力、业务能力都是空中楼阁。性能优化
说到基础知识,首当其冲的就是岗位要求的能力了,好比对于iOS开发工程师,你须要熟悉iOS底层技术:性能优化、架构模式、内存管理、线程同步等等。markdown
做为一个程序员,你还须要掌握计算机网络、操做系统、数据结构与算法,甚至是计算机组成原理(通常不多考察)。网络
这些都是最基本的,除此以外,做为一个iOS高级开发工程师,你须要了解当前火爆的Flutter框架,而且能先行一步了解并掌握。数据结构
面试官考察这些基础知识的方式很简单,找一些相关的面试题一一进行提问,根据你的回答,基本上就能够了解你对这些知识点的掌握程度了。架构
也许上面这些问题,你经过背一些面试题,看一些面经,就能掌握得八九不离十了,毕竟面试官提的不少问题也是在网上找到的,因此你可能会放松警戒,以为这样就足够了。框架
其实否则,大厂面试官还有一个爱好,就是对于每一个知识点,都喜欢深刻往下问,问到没有问题能够问,或者问到你不会为止,这样提问的目的只有一个,就是试探你对这个知识点的理解深度,若是你没法提供足够深入的回答,结果每每就是失败。async
举个例子来讲,面试官会问 GCD的一些经常使用的函数有?(group,barrier,信号量,线程同步)
咱们能够这么回答:
1.延迟执行任务函数:dispatch_after(.....)。
2.一次性执行dispatch_once(...)。
3.栅栏函数dispatch_barrier_async/dispatch_barrier_sync。
4.队列组的使用dispatch_group_t。5.GCD定时器。
就算答案已经这么冗长,其实还能够被拓展,被补充。面试是一个面试官考察你的机会,也是一个你展示本身能力的机会,因此,每次面试都要毫无保留,把你会的东西所有表现出来,结果每每会使人满意。
相比于基础知识,要提升你的知识深度更加须要时间和精力,这就不是一朝一夕的事情了,须要你不断地去积累,这方面的内容读者朋友也能够参考我以前的文章。
解决问题的能力,这个主题有点宽泛,可是却真的是大厂最喜欢考察的东西。
好比面试官拿出一道你没见过的算法题,每每是很容易让你产生畏难情绪的,若是你放弃思考直接回答不会,那你就输了。
题目可能很难,可是面试官想看到的是你思考的过程,以及解决问题的能力,若是你能够介绍本身的思路,给出一些解决方案,就算题目真的不会写,可能也会给面试官比较正面的影响。
固然,若是你有不少题都不会,那可能你解决问题的能力也就这样了。
除了算法题,智力题也是一种常见的面试题型,这些题目可能涉及几率论、博弈论,题目自己不会很难,你应该给出你的解题思路和思考过程,面试官通常也会引导你打开思路,这类题目也很能反映一我的解决问题的能力。
若是你有项目经历或者实习经历,那么面试官每每会问你在项目中负责什么,遇到了哪些困难,又是如何解决的,其实也是为了考察你解决问题的能力。
若是你能很清楚地介绍你所作的东西,而且可以告诉面试官本身经过努力解决了项目中的一些难题,必定会让面试官对你另眼相看,固然,前提是你真的作过这些项目,克服过这些困难,简历造假就是搬起石头砸本身的脚。
说了这么多,其实大厂面试官只不过想要了解面试者的可塑造性,面试题、算法题、压力面试等,都只是一种手段。由于大厂须要的有可持续发展能力的人才,可以为公司和部门长期发展提供更多的可能性。不须要救火队长,也不须要混子。