原来面试讲究方法!终于从【小公司一面就挂,下血本买的
5、网络封装框架:Retrofit 实现原理
6、响应式编程框架:RxJava 实现原理
7、图片加载框架:Glide 实现原理
8、Glide 如何确定图片加载完毕?
9、Glide 内存缓存如何控制大小?
10、加载 bitmap 过程(怎样保证不产生内存溢出)
11、Android 中软引用与弱引用的应用场景。
12、LruCache 原理
13、Fresco 与 Glide 的对比:
14、Bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM?
15、事件总线框架 EventBus 实现原理
16、内存泄漏检测框架:LeakCanary 实现原理
17、leakCannary 中如何判断一个对象是否被回收?
18、依赖注入框架:ButterKnife 实现原理
19、依赖全局管理框架:Dagger2 实现原理
20、数据库框架:GreenDao 实现原理
…
六、性能优化
这个主要结合你所做过的项目问,一般面试官会问你项目做过哪些方面的优化,常见的问法就是:
1、优化的思路是什么
2、用到了哪些技术
3、遇到了哪些困难(问题)
4、如何解决
5、有什么心得
主要结合自己项目回答。切记不要自己给自己挖坑,比如没有做过这方面优化,你为了表现自己,说做过,结果面试官往下问回答不出来,这关乎诚信问题,你们懂的~
面试总结:
我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。
首先,技术面试是一个?认识自己?的过程,知道自己和外面世界的差距。
更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。
找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。
面试技巧
然后出了上面的面试题,我还有些其他东西希望能够分享给大家,不仅仅是简单的面经,包括:
锁定目标
关于简历
邀约渠道
面试方法论
挑选 Offer
面试挂掉如何调整心态
锁定目标
一个最重要的问题:
你想找一家什么样的公司?
你需要知道你的目标是什么,是 WLB(Work Life Balance),成长,还是赚钱?
| 类型名称 | 描述 | 该类型的公司 |
| --- | --- | --- |
| WLB 型 | WLB = Work Life Balance,即工作生活平衡,955 的这种公司 | 常见于外企,国内互联网公司也有一些,可参考 Github/955.WLB。部分互联网大厂的成熟事业部(比如百度的搜索事业部)也比较 WLB |
| 跟随成长型 | 工作强度可能不轻松。但是可以跟随公司快速成长,在公司内能学到很多 | 互联网大厂基本都满足这个要求,阿里我觉得是做的最好的。某些技术驱动的小公司也可 |
| 钱多型 | 钱给的很多 | 多为业务爬升期的公司(拼多多、字节),或在风口创业公司(作业帮、跟谁学) |
据我所见很少有哪家公司同时满足上边 3 个特点,大多企业满足 2 个就已经非常不错了
你需要知道上边 3 点哪个对你最重要,排个序,然后根据这些特点来初步锁定你的目标公司
其中我要单独说下外企和阿里:
外企:外企对于英文是有硬性要求的,起码你得需要做个英文自我介绍,简单的口语要能说
阿里:我面了 10 面阿里,阿里人给我感觉都很聪明,因此我觉得加入阿里就可以变成这种聪明人(或者是说不聪明的都被公司输出到社会了?)。所以在“跟随成长型”公司里面点名表扬了一下
关于简历
简历真有那么重要吗?
网上有太多太多关于简历的文章了,这里我不想赘述如何写简历。我反而想 diss 一下:
简历真有那么重要吗?
我发现其实好像没那么重要,因为面试官根本不怎么看你的简历。这是我观察到的一个非常有趣的小细节
为什么这么说呢?事情是这样的
我的简历里面第一页里有一个非常漂亮的时间轴,是我用 Short Night 画的。这是一个我的开源项目,它在简历里大概这样:
![](https://img-blog.csdnimg.cn/img_convert/42ed7c87de314f1f4
e477b9dd33baddb.png)
因此,我当然会在面试中的开场自我介绍里面提上一嘴,然后 70% 的面试官都会有如下反应:
我:blablabla…不知道您有没有看到我简历第一页里面的那个时间轴,这个是我一个叫做 Short Night 的开源项目画的,它有诸多优点 blablabla… (面试官突然面无表情盯着屏幕) (过了 30s,面试官缓缓看向左下角,我简历里时间轴的位置) (点点头)
这说明什么?说明面试官根本就没怎么看过我的简历!
简历的作用和注意事项
当然,diss 归 diss,简历还是很重要的。下面是简历的一些重要作用
直接通过面试
有些面试官会仔细阅读你的简历,然后在你面试前,你其实就已经凭借你优秀的简历面试通过了。或是免掉写题,免掉技术问题,直接简单聊一聊项目和做事风格,也都是有可能的
我曾经面的一家公司,整场下来没有写题,也几乎没有技术问题。所以在我最后一面的回问环节的时候,我问到:
我:为什么我整场下来都没有写代码?这种面试风格会不会导致面进来一些很会扯皮但是不会写代码的人来?面试官:哦是这样的,我们已经看了你的简历和开源项目,觉得没必要再面技术相关的了,因此就是简单和你聊聊天,看看你人怎么样
HR 和猎头非常注重简历
HR 和猎头(后面会单独讲这个角色)会非常看重简历。糟糕的简历可能会导致你连面的机会都没有
如果你本身是大厂员工,HR 和猎头基本上不会拒绝你。但是如果你不是在一座明星大厂,那么还是好好写简历吧
注意!简历可能会成为你的题纲
基本上所有的面试官都会和候选人聊项目,而聊得项目来源无非有 2 个:
从你开场的自我介绍中挑
从你的简历里挑
不仅仅是项目,如果你在简历里面写一些技术关键字,那么面试官也会倾向于考察你这些知识点
比如简历里写个“Git”,那么遇到 Git 很熟的面试官看到了可能就会问“git rebase 和 merge 有啥区别”,要是答不上来就尴尬了。因此:
自己不熟或是不重要的东西最好别往简历上写!
面试方法论
一般来说面试无非包含下边几个内容:
写题
技术问答
聊项目
聊人生
面试的核心思想
我理解面试是挖掘候选人优点的过程。因此建议,如果自己某方面不行就大胆承认,然后引导面试官朝自己擅长的地方引导。
总之,术业有专攻,及时止损,想办法帮助面试官挖掘自己的闪光点才是最重要的。其中一个比较好的方法是——留伏笔,比如:
这个项目曾经做了许多非常亮眼的性能优化,希望后边可以聊一聊
我写了很多 NDK 相关的东西,对 NDK 非常熟
当然,面试官可能会不理你的伏笔,那么怎么办呢?
——多留几个
写题
这个其实是最简单的,没太多的额外发挥空间。不同公司要求的算法不太一样,按照 LeetCode 的标准大概可以分成:
| 级别 | 标准 | 外企大厂(微软谷歌等) | 外企小厂 | 字节跳动 | 国内大厂或独角兽 |
| --- | --- | --- | --- | --- | --- |
| T0 | 30 分内做出 Hard | ?? | ?? | ?? | ?? |
| T1 | 20 分内做出 Medium | ? | ?? | ?? | ?? |
| T2 | 10 分内做出 Easy | ? | ? | ? | ?? |
你可以登陆?leetcode.com
?去做几道题,算好时间,看看自己的算法水平在什么程度
如果你打算面外企,最好去英文版的 Leetcode,并将理解题目的时间也算作总耗时中
这里有个小技巧。如果你是和我一样的那种“面试时特别特别紧张,写题完全调不通”的人,最好在写题前就和面试官说好,写完大致思路后不要浪费时间调代码。当然,这个显然是一个扣分项,如果你不紧张,最好还是调通比较好
技术问答
回答问题时,尽可能的多秀肌肉
比如问你四大组件,你一方面要精准的回答上来,另一方面要再掰扯掰扯时间循环的各个阶段,规范定义。
总之,如果正确答上来 10 个题,你可能得 100 分。但是如果你答上来并说透 10 个题,你可能就得了 1000 分。如果你的回答完全超出了面试官的储备边界,那么面试官基本上会迅速终止技术问答阶段,并给你个满分
聊项目
以阿里为代表的这种很虚的公司(非贬义,指更看重软实力)特别喜欢聊项目,我面了阿里 10 面,就做了一道题和三道技术问答
下面我详细介绍下如何聊项目
从自我介绍中聊项目
聊项目从你开场的自我介绍就开始了。你要在自我介绍中,挑选出 1-2 个最具有代表性的项目来简单介绍,并留好伏笔
下面是开场自我介绍中,介绍项目的一个大纲:
一句话解释项目和你是干什么的
说几条你的职责,最好说个 2-4 条。
为项目制定准入标注
建立报警监控为稳定性负责
带了多少人
留个伏笔,引导面试官追问,比如:
这个项目曾经做了许多非常亮眼的性能优化,希望后边可以聊一聊
这个项目关于第三方代码 XXXXX 是我制定的,还挺有意思,希望后边可以聊一聊
预先对项目进行整理
你需要对于自己的项目预先整理一份脑图
这点非常重要。面试过程中光是组织言语就已经很废脑子了,如果还需要回忆几年前的项目并整理思路,那简直是噩梦。因此,预先整理你项目的大纲是一个非常重要的点。
这样可以大致保证,面试官问到任何有关上面项目的问题,我都可以迅速定位到某一个模块,然后有条不紊的解释。
其实这个精细程度还是不太够的。上图只是我的个人开源项目之一,并非是我的关键项目。我的关键项目整理的要更为复杂,内容更为多一些
聊人生
展现人格魅力的时候到了,这里你只需要将自己最好的一面展示给面试官即可
有一个需要提前准备的点,那么就是:
你的职业规划是什么,此职业规划能否与公司协同更赢?
我不建议大家为了通过面试而说假话,这样对双方都不好。但是实在是有些面试官很极端,那么你也可以顺着对方说,拿下 Offer 作为你后续的谈资。比如:
WLB 型公司:我喜欢技术,我希望有业余时间可以钻研写感兴趣的技术
共同成长型公司:我自驱力没那么强,希望可以跟随公司一起成长
钱多型:我希望努力一把实现财富自由
建议大家先说真话,这样可以找到适合自己的岗位,同时你认可的事情也可以被公司所认可。但是如果你说真话后,面试官反应强烈,那么可以尝试顺着面试官说,来想办法拿下 Offer。
挑选 Offer
如果已经拿到了很多 Offer,那么如何挑选它们呢?我认为除了各种待遇和物理条件,还有如下几点需要特别注意:
WLB 型、跟随成长型、钱多型,到底喜欢哪一个
Team Leader 人怎么样
我非常非常建议你拿到 Offer 后,和 HR 要求再和未来的【直接汇报人】聊一聊。请他介绍下现在业务情况、未来规划、用人和晋升评定原则等等。最好在实地碰一下,让他带你参观参观公司环境
毕竟接下来几年时间里,你的工作都需要向他汇报,现在是你们关系最轻松最容易了解彼此的时刻
评论