如梦朦胧
九月份的时候有了换工作的躁动,然后投了某度等几个大厂的Android岗位,本以为像我这种非211、985工作经验没几年的渣渣只能被直接pass,结果却意外的收到了电话,真是受宠若惊。经过电面,技术三面,然后就是等通知到最后拿到了offer,如梦一般,真是挺激动的。
面试的准备
当收到HR的面试的通知还是很懵逼的,因为感觉自己突然啥都不会了,迅速镇定下来,去网上找了一下一些大厂的面试题,但是发现都只有提问了什么并没有对所提问题的解答,那只能自力更生,像做试卷一样,一遍总结一遍温顾。
其实大多都是平时开发中用到的,只是我们没有总结过,被问起来的时候回答的难免会有点捉襟见肘,不能回答的很全面。下面为我个人总(bai)结(du)的,希望对你能有所帮助,但毕竟能力有限,有写的不对的地方,还望轻喷。虽然喷我我也不会改的。
因为本文篇幅较长建议收藏,在用到时候找出来看一眼。有一些知识点可能没涉及到,以后会加以补足。因为面试无非是考察你对技术的理解和总结,所以本篇的每个点总结的比较精简,只是让你大概的说出来,有的部分是需要能够画出原理图并进行解释说明,这个要在工作中多积累。
嘀d出行:
- handler原理,主线程发送message给子线程
- recyclerview列表的优化
- 自定义view,onmeasure的如何测量,测量模式起什么作用?
- 大图片如何处理?
- sp支持多进程吗?多线程呢?
- 数据库读写在同一个线程吗?
- 一个文本文件中每行有一个手机号或电话号,给定一个手机号,判断该文件中是否存在。给出时间复杂度较低的方案。
最y:
- 对着项目一通问,包括项目结构、自己参与的部分等等
- OKhttp原理,链式调用、链接复用等
- 对exoplayer、ijkplayer的了解,如果在视频未播放时就调用暂停,会有什么问题?如何解决视频的边下边播?如何解决列表中的视频滑动到屏幕中间就自动开始播放?
- 列表滑动卡顿该如何定位问题?
- 对以空间换时间的理解?
- HashMap、LinkedHashMap原理
作y帮:
- 主线程给子线程发送消息,handler、threadlocal、threadlocalmap、thread之间是怎么联系的
- glide的结构设计、btimap的复用和系统的复用比较,有什么优点?与生命周期的绑定
- 自定义view测量、布局、绘制,有没有做过复杂的自定义view,举个例子
- 一个scrollview里有个button,button有点击事件,列表可滑动,怎么去做事件分发的
- 项目架构设计、mvp的实现、model里的请求分页怎么实现?
- 视频播放器、exoplay的优缺点,ijkplay的优缺点
小m:
- handler、massage、massager、Loop之间的关系和区别
- view的绘制和事件分发,Android的绘制机制?布局的绘制流程?
- Activity在oncreate中finish,生命周期是怎样的?
- Glide、okhhtp、retrofit等三方库的原理,简单阐述
- 视频播放器封装、弹幕的实现,自己项目的结构和路由框架、新闻列表的实现、mpv的实现等
- android内存泄露有哪些?怎么处理?handler为什么会发生内存泄露?它的gcRoot是什么?强软弱虚引用哪些可以解决内存泄露?为什么?
- 一个view上每秒显示一个数字,每隔一秒改变一次,想出解决办法,越多越好
- 代码健壮性和质量怎么控制?appbug怎么统计的?怎么处理的?
- 一个string值传入方法,值改变吗?换成stringbuild呢?
- Java垃圾回收、分代算法的原理,如何判定对象死亡?gcRoot有哪些?Java内存模型,哪些区可以作为gcRoot?内存怎么释放?线程的工作内存放在哪?强软弱虚四种引用的区别?
- 给定数组-1,0,1,0,-1,-4,0找出其中3个数相加为0的全部组合,给出解决方案
- 判断单链表相交,找出节点,手写代码
- 反转单链表,手写代码
- 给定两个链表,存储着两个16进制数,链表的一个节点存储着16进制数的其中一个数,从高位到低位,求相加的值,返回一个链表,链表中保存相加的结果。(先反转链表,然后逐位相加,记录进位值,再与高位相加)手写代码
百d:
- 抽奖转盘,分四份,中奖概率为5%,UI和逻辑怎么实现
- 数据库查询,至少参与了三项考试,且分数均超过80的人,写出sql语句
- 线程同步:线程1循环输出1到10,线程2循环输出1到10,启动线程1、2,要求做到线程2输出5之后,线程1才开始输出(用wait、notify实现)
- jvm内存模型,垃圾回收机制
- 手写单例
- kotlin类的扩展,【】方括号该扩展什么?
- 怎么在项目中进行架构设计的?MVP模式的优点,如何实现?MVVM了解吗?
- 网络请求大量图片并展示在页面上,需要注意什么?网络请求资源复用、图片缓存等
- 内存泄露有哪些?怎么处理?
- 数据查出来为什么用cursor游标,而不直接返回个list集合?
- 缓存了10000条数据、怎么查出来并显示?项目中数据库大概是什么量级的?数据量及占内存量?
- content provide是干什么的?Google为什么设计它?
- 一个网格页面、显示9张图片,弱网情况下,滑到下一页,怎么去调度线程加载下一页面的图片?
- 了解的设计模式,代理模式流程、观察者模式流程、涉及几个类
- 了解哪些google推出的比较新的库、livedata?databinding?jetpack?
- kotlin相对于Java有什么优势?函数式编程的优势?函数式和面向对象比较
- 商城里有图片、文档、视频,字段有(id,name,type,pic,author,price),选择购买后在我的订单页可以查看,可选择下载至手机本地,给出客户端实现方案、写关键代码,给出数据库实现,写关键sql语句
- 文件中每行有一个手机号对应用户信息,给定手机号查找出对应信息,如果手机号排序了,怎么查?用了二分法查,写了简单的二分法实现
- 任意二叉树,求出其中最远的两个节点间的距离
- 对未来职业生涯的规划?怎么去做有深度的工程师?开发中遇到的困难?怎么解决的?自己项目里做的亮点!面对一份新工作怎么去适应?自己公司开发项目的流程是怎样的?你参与了哪些流程?项目中你有没有主动提出过对产品优化的意见?
最后
以上面试中问到的题目基本上都可以在上面找到答案,所以做准备是很重要的,但技术是一点点积累的,就算你全会背了,面试过了,真正等到工作的时候还是会捉襟见肘的,所以踏实点吧骚年。
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2020BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
Android 基础知识点
Java 基础知识点
Android 源码相关分析
常见的一些原理性问题
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析
最后,希望大家都能够有自己清晰的发展路线,希望大家都能顺利拿下offer,进入理想的公司,共勉!
以上文章中,所有的文档资料都可以免费分享给大家
需要这些资料的朋友
直接私信我回复【资料】免费领取~