本人情况
自我认知:非天赋型,比较擅长归纳整理和交流讨论。
学历:211 本(交叉学科),985 通信硕(保)
竞赛:非计算机相关赛事(ACM之类的没参加过),都是一些团队比赛,名次高的相关度不高,相关度高的名次低。
论文和专利:非相关方向
实习:只有一段,时间在大四保研后。研二下学期因为在赶小论文,所以没有参加暑期实习,直接开始找工作。
项目:类型较多,相关经验的略不足。
岗位选择和秋招概述
综合自己的实际情况、兴趣方向和能力范围,从2019年底就明确想找客户端的工作了,但是真正开始大规模投递公司是在 2020.7.16(小论文截稿日)后。大部分有给面试机会的公司都集中在 7-9 月份面试。本人知足常乐,从 9 月底开始就处于收到意向书后等正式 offer 的咸鱼状态了。个人体会:如果选岗比较明确且适合自己,学习路线就会比较明确,可以明显看到自己的不足和成长。
面试准备
自我介绍
简历上的项目复盘和查新
算法学习与归纳
基础知识学习与归纳(计算机网络、操作系统、数据库、JAVA 基础和安卓基础)
一面(55min)
常规问题
自我介绍
为什么选择安卓客户端的岗位
安卓学习路线
编程相关的书籍还看了哪些
有没有写一些博客和开源项目
学习安卓的时间
《第一行代码》看了多少
能提前去实习么
基础知识问题
(Java)String、StringBuffer 和 StringBuilder 的区别
思路:从可变性和安全性的角度入手分析,如果使用的比较熟练的,还可以从用法入手分析。
(Java)String 的内部实现
(Java)String 对象主要存储在哪块区域(常量池)
(Java)重载和重写的区别
口诀:重写(两同、两小、一大),重载(方法名一致,形参列表不同)
(Java)HashMap 和 HashSet 的区别
思路:可以从Map和Set的区别、HashMap和HashSet的方法与底层原理入手分析。
(Java)写一下 HashSet 的实现
思路:可以用HashMap的key作为HashSet的元素(不可重复性),同时令HashMap的value为同一个Object
建议:像这种涉及到源码的题目,如果面试时候不记得源码,可以试着先找规律,一步步推理,面试官会给思考时间的。同时一定要记得多跟面试官交流,问清楚需求。
(JVM)运行时数据区
(JVM)创建对象的过程
(JVM)判断一个对象是否被回收
(JVM)新生代和老年代用的垃圾回收策略
(安卓)activity、window 和 view 之间的关系
(操作系统)LRU 的实现
LRU缓存机制(力扣146题)
推荐学习链接:
方法1:哈希表+双向链表
方法2:源于LinkedHashMap源码
(计网)HTTP的缓存机制
算法题
查找单向链表的中间结点
力扣876题
思路:快慢指针法,循环中快指针走两步,慢指针走一步,在循环结束时,慢指针恰好在中间位置。
链表的倒数第 k 个节点
力扣剑指Offer 22题
思路:快指针先走 k 步,然后快慢指针同步走,最后慢指针恰好在倒数第 k 个节点的位置。
二面(60min)
常规问题
自我介绍
一些关于项目的问题,建议项目问题回答遵循 STAR 法则【STAR法则是情境(situation)、目标(target)、行动(action)、结果(result)】。
开发项目时候遇到哪些比较困难的问题,怎么解决的
个人职业生涯规划是什么样的
你希望在什么样的团队里面
基础知识问题
(Java)HashMap、HashTable 和 ConcurrentHashMap 的区别
(安卓)布局文件的区别(各种 Layout)
(安卓)内存不足时候使用的字段(不太了解这方面的知识,强行扯了两句以后商量换题)
(安卓)有没有遇到过一些安卓 crash 崩溃的情况,如何解决的
(安卓)你遇到的内存泄露的情况
(安卓)安卓点九图的使用(没用过,商量换题)
(Java)强引用、弱引用、软引用和虚引用的区别(我还加上了一个终结器引用的解释)
(操作系统)进程和线程的区别
(操作系统)线程的生命周期
(操作系统)sleep和wait的区别
(操作系统)死锁产生的原因
(安卓)ListView的优化措施
算法
最大子序和
力扣53题
思路:很简单的 DP 问题
智力题
倒水问题:一个装了 10L 水的桶,一个 7L 的空桶,一个 3L 的空桶,怎样变成 2 个 5L
三面(75min)
常规问题
除了 Java 以外,还用了什么语言(回答了 c++ 和 python)
项目分工
想选择的城市,自己的家乡
职业生涯规划
基础知识问题
(语言类)c++ 和 java 在内存管理方面的区别
(语言类)c++ 有垃圾回收么
(JVM)对 gc(垃圾回收)的理解
(JVM)你觉得可达性分析用什么数据结构比较好(垃圾回收的延伸知识)
(JVM)管理内存的策略和机制有哪些
(JVM)垃圾回收算法
(语言类)内存泄露的场景
(语言类)c++ 中的对象类,对象内部的类是如何存储的,内部元素存储在哪些空间里面
(语言类)调用函数的实现机制
(计网)网络传输都做了哪些事
思路:参考《浏览器中输入域名(url)后发生了什么》问题进行解答
(计网)如何保障网络传输的数据安全
(计网)AES 的加密性能会高于RSA么
(计网)RSA 的实现原理
(计网)MD5 加密以后能解密么
(计网)网络传输中,你只把数据加密了,就能保证网络的安全么?有没有其他的隐患
(计网)有没有了解过如何规避 DNS 劫持
(计网)洪泛攻击的规避方法
(编程习惯)如何把代码设计的更好,更健壮
(编程习惯)常用的设计原则和设计模式
编程习惯类问题,需要谨慎回答一些自己知道的,因为会顺着你的回答再问一些详细的内容,答不上来就会很尴尬。
算法
滑动窗口的最大值
力扣 239 题
不同点是返回值为List<Integer>,要注意边界条件
顺时针打印矩阵
力扣剑指 29 题
最小路径和
力扣 64 题
不给样例,需要自己想象。
HR面(17min)
前面的面试结束以后,对美团的基本情况有一定了解了么
意向城市是上海的原因(简历和最后的业务不在同城而引发的问题)
实习经历盘问,主要针对简历上的
实习以后的收获
选择岗位的偏向
觉得自己经历过最难的项目是哪个
你还有其他 offer 么
你手上这些 offer,你会怎么选
反问环节:进去以后的部门和岗位,需要自己做选择么
反问环节:如果有意向书的话,大概什么时候发放
结束语
面试需要实力与运气兼备。如果面试中遇到完全不会的题目,建议直接说不会,面试官会换下一题。如果面试中遇到曾经用过但是记得不太清楚的,先把自己知道的给说出来,然后不断和面试官交流,明晰需求,实在不行的话就直接说自己忘了吧。个人建议:与其在不太熟悉的领域浪费彼此的时间,不如跟面试官沟通下换题。
学习福利
在这也分享一份自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。
总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习
就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包——————可以我的【Github】阅读下载,最后觉得有帮助、有需要的朋友可以点个赞
网友评论