新鲜出炉的Android面试真题集锦我给你们整理出来了!成功入职腾讯

开头

最近有粉丝反应,不想做安卓了,有朋友转到前端了,安卓不行了,问我怎么办?

自从RN,Weex这种跨平台编程语言出来以后,安卓将死的言论总是不绝于耳。随着颇有摧枯拉朽之势Flutter的出现,加之近几年的裁员潮,使这种论调好像更加可信。

恍惚间会让人想到2010年,安卓初兴,一切还是桌面应用开发的天下,当时的语言还集中中JAVA、HTML、MFC、.NET、C#,各个语言为了争夺桌面应用开发第一位,也是拼得你死我活。当时的安卓系统还是方兴未艾,谁也不知道,它会引领着另一个时代。

几年过去了,桌面开发已经基本死了,现在轮到Android开发了?

1、自我介绍。自我介绍其实是个比较关键的过程,这基本上决定了后续环节将会问哪些问题以及初步给你的评分定位(作为无数候选人的面试官,这一点主观上个人也是如此认为)。自我介绍的要点是重点讲述一两个最近自己主要参与或者负责的项目,着重说明自己承担的角色,所负责角色具体所做的事情,思路一定要清晰。

2、完了之后,基本上面试官会对着其擅长和当前尚未解决的或者心存疑虑的问题进行提问或者说相互沟通、交流。因为面试的是架构师,所以纯粹的技术性问题(比如aop,bean生命周期,jdk基本的并发,常见缓存方式等等)已经没有问了,直接就是针对项目里面的具体架构、业务问题进行深入的讨论。

比如整体架构他会问道为什么我要用F5以及LVS而不是其他的。问到的包括对于性能,如何进行排查,通用的答复(比如说我说先看前台还是后台前台findbugs、chrome f12,后台先看哪台服务器负载高,top、vmstat、sar等等,如果oracle则看awr,MysqL看performance schema。应用服务器的话看jstack,jprofiler等等)之后,一般会进一步问具体哪些指标等等,基本上如果答复足够清晰的话,一般面试官不会再进一步细问。

讨论到分布式事务回滚的时候,我们沟通到由发起方负责传递分配被发起方ID可实现,服务的可重复执行以及补偿。另一个面试官问道,他要确保缓存中取到的值必须是最新的,要么取不到,我说那就先删除缓存,再插入库,最后插入缓存,就不会有问题,或者用handersocket实现,这样也可以保证没有问题。再然后相互聊了下restful的优势与劣势,Nginx,rpc框架与架构。谈到MQ的时候,因为MQ很早的时候研究过,后来因为公司自己开发了一个定制的MQ,所以基本上不了解各种MQ的差别以及实现机制,直接答复不清楚即可,这一点其实问题不大,每个人总会有弱项的。

最后,一般来说,好像面试官是技术出身的,通常会再问,工作外是否关注新技术,如果答复是的话,通常面试官会进一步问看哪些新技术,哪些论坛的哪些板块,对于具体的新技术,如果面试官有接触的,他会进一步问这个技术的特点、相对于现在的优势。

基本上,技术面试会问六七个左右,一般会从概述性开始,到实现层面具体如何实现都问进行,这一点其实跟面试官很有关系,国外通常认为架构师必须是写代码的,虽然不一定工作中的职责是写代码,但他必须知道如何验证他设计的架构是否合理,而不是脑袋一拍,丢给程序员去自由发挥。

有些公司或者部门招聘架构师或者相对比较高级的开发时,通常面试官是非技术出身或者技术并非其强项的,这个时候面试就不会这个讨论,很大程度上可能围绕着4+1模型去问。如果面试官在DB方面擅长,可能为重点放在数据库设计上。

3、技术面试在2个小时左右结束,随后根据两个面试官出去时的表情可以看出基本上技术面过关了,随后跟两个面试官的主管差不多沟通了半个多小时,最后又跟人事沟通了差不多半个小时,人事答复他们会内部沟通下定级的问题,再行通知我,可以认为基本上搞定了。

4、第二天晚上就收到收到人事的通知了,因为开的薪资不满意,直接拒绝了,并给出了最低要求。人事表示,会和部门再行沟通,又过了2天,人事答复,薪资按我要求进行调整了调整,五一一回来,OFFER就发过来了。

5、补充一点,作为惯例的一部分,技术面、二面、人事面基本都问关于我们公司或者其他方面,你有什么需要了解的或者想问的么,这一点大家就随意了,感觉怎么回答问题都不大,主要还是看自己对候选公司的了解情况或者主观意愿。

最后

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。

另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤…所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音决对是一个加分项!

最重要的是心态!心态!心态!重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。

希望大家都能找到合适自己满意的工作!
如果需要PDF版本可以在腾讯文档中自行领取!

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

、常见算法题汇总。)

[外链图片转存中…(img-n3Vi47i2-1621431587709)]

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...