大家好,昨天有同学在后台问我大厂的面试流程是怎样的,我回想了一下,发现几次面试的经历都还记得,今天就和大家聊聊这个问题。
大厂面试流程:自我介绍→白板编程→基本技能考察→软实力考察(潜力考察)
一般来说大厂面试的第一个环节就是自我介绍,面试官会让你简单介绍一下自己。
如果没有大厂面试经验的同学可能会被一下问住,然后结结巴巴地把简历上写的内容复述一遍。这当然是不对的,因为面试官在给你打电话或者是面谈之前一定都是会先提前看过你的简历的,所以如果只是复述简历的内容完全没有意义。
这个问题不是考试,没有标准答案,所以我只能给大家说说我个人理解下比较好的回答方法。
这个自我介绍其实可以理解成整个面试的定调,你需要把你的一些特点展现出来,尤其是一些简历当中不方便写或者是很难描述的内容。比如说你可以在简历当中写上很多项目经验,可以写学历背景,但是一般来说是不会自吹自擂地写自己学习能力很强,或者是有坚韧不拔的性格等等。但自我介绍的时候可以,然后结合这些特点,简单提一下简历当中的一些项目或者是经历,就像是写议论文一样,有论点有论据。
比如如果是我去面试,我就会说我是一个学习能力很强,软件工程和Android开发都懂的人。曾经刚毕业的时候阴差阳错做了一年的后端开发,后来通过自学转行做的Android开发,之后又如何如何,介绍一下做的项目和成绩,体现一下能力。有一定叙事性,而不是干巴巴的平铺直叙会好得多。
我建议大家在面试之前都可以先在纸上写一写,列个简单的稿子,注意不要太长,最好一分钟左右。
一般自我介绍环节之后就是白板编程的环节,会让你在白板上或者是记事本上做一道算法题。
一般来说面试环节当中不会出特别难的编程题,除非是FLAG这种北美大厂,国内的公司一般出题不会太难。我列举一下我个人遇到过的白板编程的题目,一次是裸写归并排序,一次是的最长不下降子序列,一次是LRU。总体来说最难的是的最长不下降子序列,差不多相当于LeetCode Hard的水平。
除了白板编程之外也有一些算法考察的问题,就是不需要写出代码,但是给出思路。其中比较难的有变种的汉诺塔问题以及KMP的原理讲解,还有一些比较简单的概率计算以及动态规划问题。
当然这个环节只是把题目做出来不是最重要的,代码风格以及规范同样很重要。比如全英文命名、驼峰命名,不要用什么拼音或者是aa,bb这种变量名。另外白板编程由于没有IDE提示,会有些bug或者是格式错误是难免的,但是我们要尽量避免。这些也需要提前准备,不然一道白板上写出来各种bug,显然也是会扣很多分的。
Android开发的基础知识比较多,大家可以对应一下这份思维导图查漏补缺。
然后就是搜集面经,看看其他人面试的时候都遇到了什么样的问题。一般来说大厂都会有一些面试题库,不同的面试官可能提问的角度不同,但是底层考察的逻辑可能是差不多的。
这一块是软实力的考察,一般来说不论大小厂都有这个过程,只不过有些企业是显性的考察,有些是隐性的。
根据我的理解,在这个环节主要考察几个方面:
第一点是你的管理成本。说白了就是你听不听话,是不是一个容易服从管理的人,还是一个很有个性容易挑事的“刺头”。一般来说只需要在面试的时候保持谦卑,不要过于骄傲都不会引起面试官对这点的怀疑。
第二点是你的沟通能力,你是否是一个容易沟通的人。这一点既体现在你的理解能力也体现你的表达能力,你能不能听懂面试官在说什么,能不能听懂他指出来你思路或者是回答当中的一些问题。然后对于你自己的想法,你能否表达清楚让对方能够理解。这点还挺重要的,因为谁也不想招一个很难沟通的人进来,和不好沟通的人共事是非常心累的事情。
第三点是你的抗压能力,当面试官一层一层往下追问细节给你压力的时候,你能否顶住压力稳住心态。有时候面试官故意层层追问,既是在考察你对问题的理解程度,也是在看你的抗压能力。有些人面对追问心态崩了产生明显的抵触和不耐烦,显然是会扣分的。
最后一点是潜力,这一点有点玄学很难有一个直观的评判标准,往往是面试官的主观判断。一般来说就是考察你的工作经验以及你当前的实力,如果你能表现得超出同期人许多,那么就说明你潜力很高,学习能力很强。如果你表现得不如同期,那么就显得你潜力比较低,要么自己不努力,要么就是资质低,努力了也学不会。
这份资料我从2020年春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
正文总共分为6个部分:
Java 基础(★★)
Java 高级(★★)
Android 基础(★★★)
Android 高级(★★★)
Android 项目(★★★)
项目面试常见问题(★★★)
面向对象思想
多态
异常处理
数据类型
Java 的 IO
集合
Java 多线程
Java 中的反射
Java 中的动态代理
Java 中的设计模式&回收机制
Java 的类加载器
Android 基本常识
Activity
Service
BroadCastReceiver
ContentProvider&数据库
Android 中的布局
ListView
JNI & NDK
Android 中的网络访问
Intent
Fragment
Android 性能优化
Android 屏幕适配
AIDL
自定义控件
Android 中的事件处理
Android 签名
Android 中的动画
网络协议
其他
以上是整理总结的Android中高级面试遇到的真题解析,希望对大家有帮助;同时很多人经常也会遇到很多关于简历制作,职业困惑、HR经典面试问题回答等有关面试的问题。同样我也搜集整理了全套简历制作、金三银四社招困惑、HR面试等问题解析,有疑问,可以提供专业的解答。
对于Android开发的朋友来说应该是最全面最完整的面试资料,为了更好地整理每个模块,我参考了很多网上的优质博文和项目,力求不漏掉每一个知识点。很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个资料也已经帮助了很多的安卓开发者,希望也能帮助到你。
我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。
首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。
更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。
找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。
最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿!
感谢您阅读这篇文章,如果可以收到您的点赞,我将非常荣幸,希望我们可以成为朋友,一起分享交流Android技术。