总结拼多多,美团Android面试经验,给大家安排上!
# 字节跳动Android面经
**一面问的 Java 和 Android 基础**
1、Jvm虚拟机
2、messageQueue会不会阻塞ui线程
3、对象锁和类锁
4、之字形打印树
5、还有其他的记不清了,主要是我对二面印象太深刻了。
**二面问的 Flutter 和 Dart**
1、dart是值传递还是引用传递
2、Widget和element和RenderObject之间的关系
3、widget的root节点
4、mixin extends implement之间的关系(除了extends其他的没怎么用过。。)
5、jvm内存模型(感觉这个是面试官可怜我,看我什么都不会才问的=。=)
6、Future和microtask执行顺序
7、dart中..的用法(基本没用过。。)
8、await for(没用过。。)
说实话,第一个、第三个、第六个我准备的话应该能答出来的,但是一个多月没碰Flutter了,忘了都差不多。。。
此外GitHub和博客维护好很重要,像我这种demo随手写,随手删的人直接GG。。
![面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625153574973130.jpg)
# 面试字节跳动需要做哪些准备?
接下来将分:面试前、面试中、面试后 三个部分,解答一些常见的问题。
# 面试前
**如何寻找一个面试机会?**
1. 内推:首先推荐大家走内推途径,内推的简历通过率远高于其他方式;内推的途径有:联系工作的师兄师姐、在论坛上找对应的内推贴、参加校招宣讲会 等
2. 对应公司招聘官网直接投递:需要大家明确自己想投哪些公司,直接搜索公司的官方招聘官网(大公司普遍都有),找到自己想投的岗位投递
3. 相关招聘网站投递:在各类招聘网站上HR也会发布对应招聘信息,可以对应的投递
**需要为面试做哪些准备?**
1. **一份优秀的简历**:要能说明 学校、学历、实习经历、在校期间技术项目经历 等,具体的在姊妹篇《校招啦——来自字节跳动面试官的技术简历指南》,敬请期待。
2. **了解投递的岗位要求**:就是我们常说的JD(Job Description),公司的招聘官网或发布的招聘信息里面会详细描述,如果找不到或公司没写,可以联系HR发邮件说明。
3. **复习面试岗位相关知识**:校招同学需要复习 计算机基础(网络、操作系统、计算机组成原理、数学等)、编码能力(数据结构、算法) 、技术方向基础知识(如前端同学主要看html/css/js)
4. **整理自己做过的项目**:包括实习项目、个人项目、科研学术项目、参与社区开源项目等,在面试时需要做自我介绍,面试官也可能会根据你的简历询问项目内容。
5. **适当的做一些算法题**:前端、测试等一些岗位可能不是特别重视算法,但做一些算法题能训练你的思维、代码能力;常用的刷题网站:LeetCoode、牛客网、各大高校OJ等
# 面试中
**如何自我介绍?**
技术面试自我介绍时请focus在技术方向上,有些同学会准备一段华丽的开场白,介绍自己大学期间的学生会、组织活动等经验,这些内容对于技术面试没有太多吸引力,不利于面试官找到对应你的合适问题,有时候反而会在面试官心目中减分(感觉不够专注技术)。 建议是:
1. 有技术实习经历的同学,重点介绍实习中做过的项目,说明自己在项目中的角色、负责研发了那些部分、使用了什么技术栈、学习到了什么。
2. 没有实习经历的同学,可以介绍自己在目标岗位的技术方向上学习了哪些内容、有做过什么个人项目 或者一些Demo项目。
3. 有**ACM等计算机竞赛获奖经历**的要说明,加分项。
4. 有**参与开源项目或社区建设**的,建议说明,加分项。
5. 学术大牛同学也可以说明自己发表论文、参与会议情况,也是加分项。如果学术方向和工作内容没有太多关系,建议不要滔滔不绝的详细介绍,如果学术方向刚好和岗位match 或 面试官有兴趣,面试官一般会主动继续聊下去。
**没有实习经历可以吗?**
答案是——可以的。 有技术实习经历当然好事,但是对于校招/实习同学来说,不一定人人都有实习经验,或者实习经验可能与当前岗位不match。所以不用过分担心,一般能过简历参与面试的同学,都是得到了初步的认可的。没有相关实习经验的同学,面试时可以突出自己在其他方面的优势(如:个人项目、开源项目、竞赛、学术,参考上个问题),面试官如果认可你的知识储备、能力、潜力就会通过。
没有 相关实习经历 和 没有相关知识能力 是两回事,有实习经历缺没有积累知识能力的同学,可能最终评价会不如 通过自己学习探索具备相关知识的同学。所以请一定要做好面试前的准备,让自己符合面试岗位的要求,比如投递前端岗位的同学,至少要学习html/css/js相关基础知识,对当前常用前端技术栈有一定的了解,并且有动手实践的经历。
**需要对业务了解吗?**
校招/实习 来说,并不强求对业务的了解,一般来说在校同学也很难对业务有深入的理解,有相关经验了解当然是加分项。
**面试整体流程**
通常来说,一次完整的面试包括:笔试、技术面试、岗位match、HR面试。
**笔试**:可能是线上笔试 或 当场笔试,校招笔试题目范围较宽,会涉及计算机基础知识、面试方向的知识技能、代码coding、数据结构 & 算法 等。
**技术面试**:以字节跳动为例,校招一般是2-3轮交叉技术面试,实习一般是1-2轮,考察 计算机基础、编码能力 、技术方向基础知识以及技术深度、系统设计能力、抽象能力和工程化能力、软素质 等。一面更偏向基础知识、技术广度,二三面偏向技术深度、进阶能力。
**岗位match**:一般是通过技术面试后,由业务部门负责人面试,偏向软素质、专业能力、个人发展与规划等。
**HR面试**:通常是最后一轮面试,主要聊一下职业规划、个人诉求、面试过程中的一些问题、入职相关信息(如可入职时间、实习时间、工作地点等)
**遇到不会的问题如何处理?**
首先要明确——谁都会有不会的问题。即便是工作多年的社招同学也会有知识盲区,有部分不会的问题并不会影响你的整个面试评价。所以,**千万不要不懂装懂**,这样反而会留下负面印象。 确实不会的问题请直接和面试官说明,可以让面试官给一些提示,或者征询面试官意见看能否现场查阅相关资料(一定要在面试官许可下查询,否则容易被算作作弊)。如果在提示或查询资料后,解决了原本不会的问题,也是加分项——说明学习能力、应变能力、抗压能力不错。
**面试时可以问面试官什么问题?**
在一轮面试结束后,面试官可能会说:“你有什么问题想问的吗?” —— 注意,这个可能也是一道面试题,面试官想通过你的问题,了解到你的职业诉求、个人规划、学习能力等,所以要慎重的选择自己的问题。 技术面试环节不建议问一些与当前面试无关、涉及公司机密、个人隐私的问题,如:加班多少/工资待遇(这个在HR面试环节可问)、公司当前收益情况、业务线具体使用的核心技术、面试官联系方式等 可以问一些与自己相关的技术方向问题,如:如果通过面试需要学习哪些内容做准备、面试官对你本轮的评价和建议(如果面试官不方便说,也不要追问)、面试过程中某个困惑问题的解决方法(时间限制面试官可能只能给出思路)等。
# 面试后
**长时间没有得到回应如何处理?**
面试后请注意查收自己的邮箱、保持电话畅通,如果长时间(3-5天)没有得到回应,建议和HR联系。校招的同学通常比较畏惧与HR交流,担心本身“薛定谔的猫”状态的结果在自己联系HR后就变得负向了,这个心理一定要克服,及时的确认面试结果才有利于安排之后的面试/offer选择。 如果真的得到了不好的结果,也可尝试问一下HR面试评价中自己的问题,不一定能得到答复,但如果HR能告诉你也利于你及时发现、解决自己的不足,为下一次面试打基础。
**面试没有通过可以再次投递吗?**
有的公司有面试不通过锁简历机制(一段时间内投递无效),这个也可以和HR问清楚。 我司(字节跳动)是不锁简历的,某一岗位面试不通过任然可以继续投递。但是建议大家每次投递都认真准备,你的每一次投递、面试都可能被记录,如果多次面试、投递没有体现出成长,也还是会影响后续的简历筛选与面试。
**面试后可以在分享面试题吗?**
可以自己记录面试相关题目、经验,为自己未来的面试做准备资料,但不建议立即分享(包括分享再网络上和分享给其他同学),有些公司笔试、面试时时会签署协议的,如果发现分享最新面试、笔试题目,可能会直接取消录用资格。
![面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625153575786338.jpg)
#
# 最后
现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
**上述【高清技术脑图】以及【配套的架构技术PDF】点击:[Android架构视频+BAT面试专题PDF+学习笔记](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md),或者私信回复【技能提升】即可获取!**
> 为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!
Android架构师之路很漫长,一起共勉吧!