说在前面
面试时最好不要虚报工资。本来腾讯是很想去的,几轮面试也通过了,最后没offer,自己只想到几个原因:1、虚报工资,比实际高30%,现在有些公司要提供银行流水;2、有更好的人选,这个可能性不大,我看还在招聘。我是面试Android开发的,3年经验,下面是面试流程:
一面:
1.mvp mvvm区别 mvvm中的databinding如何刷新view的
2.跨进程通信方式,binder机制
3.leakcanary原理
4.内存优化和工具,APK瘦身
5.get和post的区别,浏览器中输入一个地址然后展示出页面这个过程中做了哪些操作
6.断点续传和下载的原理
7.glide缓存原理,lru算法
8.动态代理原理
二面:
1.java虚拟机
2.内存优化
3.arraylist hashmap linkedhashmap
4.binder
5.surfaceView和view
6.AMS WMS
7.APK瘦身
8.锁(死锁的场景和解决方案)
9.算法 两个字符串 比较最大的公共字符串 ,主要是思路 (面对问题,以大化小)
三面:
1.http优化 okhttp多路复用
2.硬币兑换问题 [算法]
3.车的通过问题,一条路上,30分钟内看到有车通过的概率是90%,那么5分钟之内概率是多少
4.图的展现形式
5.全球货币转换功能的代码
6.给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度
这是我在某论坛看到的故事,我知道我们很多程序员都有一个大厂梦,但如何针对大厂进行面试准备,如何和 HR 聊天,比如谈钱等等,很多程序员就显得手足无措了。本文就根据自己一些见解谈谈这些问题。
什么是合适的候选者
在介绍如何面试之前,这里先从公司的角度来分析:”到底什么样的候选者是公司所需要的技术人才?“就我在现在这家公司的一些面试官经验来说,一个具有如下特征的Android程序员是我们所需要的:
- 具有本科及以上学历(名校更好)
- 具有2年及以上的工作经验(名企更好)
- 技术扎实,有技术追求和工作激情
- 良好的沟通和协作
在上面的四条中,其中第3条是最为重要的,即技术,技术是决定能否通过面试的最重要最直接的原因。一般来说,越是大公司,其对技术的要求就越高,尽管部分岗位并不需要那么好的技术,但是为了对候选者做出区分,其面试过程仍然会面试一些稍微深入的话题,相信大家都有所体会。
除了技术以外,良好的沟通和协作能力也是比较重要的。也许很多人觉得这个比较抽象,心里会想:”你怎么知道我有没有良好的沟通和协作能力呢“?其实这个问题并不难,面试过程就是一次沟通过程,如果不能和面试官很好地沟通,这就说明候选者的沟通有问题。如何很好地和面试官沟通呢?给如下几点建议:
- 礼貌和尊重。
- 听懂面试官的问题并直接回答。
- 谦虚谨慎、态度友好。
下面对学历和工作经验做一些说明,学历并不是一个硬性要求,即使候选者学校不怎么好也是有可能通过面试的,这就要求候选者技术非常扎实。而工作经验,之所以是2年以上,这是因为社会招聘的对象一般都是有一定工作经验的,而1年工作经验略短了点,拿百度来说,社招的最低级别一般为T4,差不多刚好就是2年经验左右。
这里做下总结,理想的候选者应该是这样的:
- 扎实的技术功底,有技术追求(必须)
- 态度、沟通和为人都很好(必须)