android 基础知识总结,面试复盘
技术面
具体哪面问的忘了,就统一写一起了,具体的顺序也是随便写的。
Java 相关
String、StringBuffer、StringBuilder 的比较。好,那你给我说个需要使用 StringBuffer 的场景(囧),还真没想出来。。。
finalize 知道吧?不知道,但是我知道 final 和 finally,好,那 try catch finally 之间的关系说一下,然后面试官在纸上写了段代码,让我判断输出是啥。因为涉及到 return,就问我 Java 里的 return 机制。面完后查的:return 语句并不是函数的最终出口,如果有 finally 语句,这在 return 之后还会执行 finally(return 的值会暂存在栈里面,等待 finally 执行后再返回)
说一下 this,知道多少说多少
hashcode 和 equals 方法,在实际的项目开发中,什么情景需要我们去手动重写?
我看你用到了单例模式,那你写一个”完美的“单例模式的实现吧。。。然后抠细节
用过 Redis?那还知道其他的分布式缓存吗?说一下和 Mem***d 有啥区别
知道异常吧?平时遇到过哪些?
说说软引用和弱引用的不同
HashMap 的 put 原理?和 Hashtable 的不同
可能还有。。。记不起来了
Android 相关
Activity A 启动 Activity B(可能为透明的)的过程,说一下生命周期函数回调的顺序
Activity 的生命周期函数是谁调用的?
说一下 Fragment 的生命周期?它的生命周期函数又是谁调用的?
知道视图绘制吧?说一下 View 的绘制原理。那重绘 invalidate 呢?说一下从调用 invalidate 到 onDraw 的过程。
我看你用了几个框架:说一下 LeakCanary 的原理?怎么判断内存泄露发生的?ButterKnife 的注入原理?它的 bind 方法是怎么找到对应的 xml 文件及将控件进行绑定的?
你用了 Litepal 框架,还了解过其他的吗?为什么选择用 Litepal 而不用那些?
SQLite 也属于关系型数据库,说一下关系型数据库使用过程中的一些优化手段吧
说一下 Android 的事件分发机制,就是怎么进行传递的
用过 RecyclerView 吗?那 ListView 呢?好,说一下 ListView 的一些优化技巧。
Android 线程间通信的方式有哪些?好,那说一下 Handler 的原理吧
学过 Kotlin?恩,说说你知道的关于 Kotlin 的东西,最后和面试官聊得时候,才知道快手已经在使用 Kotlin 开发 app 了,哈哈,感觉自己有点幸运,面试官一看我 Kotlin 掌握的还可以,说对我印象挺好。然而,下面的算法题,没能用 Kotlin 写出来,,还是用的 Java。。。
可能还有。。。记不起来了
计算机网络相关
UDP 与 TCP 的区别
提到拥塞控制了,说说 TCP 是怎么实现拥塞控制的?怎么判断当前网络发生了拥塞?
HTTPS 与 HTTP 的区别?客户端通过 HTTPs 的 url 访问服务端,说一下整个过程
你说 TCP 的首部有固定 20 个字节,都包含哪些内容?
说一下三次握手、四次挥手(详细点)?为什么握手需要三次,而挥手却需要四次?
可能还有。。。记不起来了
算法
1、一个多线程的问题,用五个线程,顺序打印数字 1~无穷大,其中每 5 个数字为 1 组,如下:其中 id 代表线程的 id
具体思路及代码实现,当然包括一个类似的问题,已整理到博客:欢迎交流
面试题:常见的多线程实战手撕代码(顺序打印数字、字母)
2、判断链表是否有环?并确定环的入口。
剑指 Offer 原题:
链表环的入口节点
HR 面
家是哪的?父母做什么的?我看你是通信专业的,为什么想做客户端开发?保研还尝试过哪些学校?为什么最后选择北邮?还有别的 Offer 吗,薪资是多少?等等。。。期间小姐姐一直在讲快手的产品、日活特别大,公司得技术氛围好、提供免费的午晚餐、健身房等等。哈哈,反正聊得很愉快。
写在最后
能拿到快手的实习 Offer,感觉自己很幸运,3 月初才开始准备,身边的同学早就拿到了理想的 offer,唉,尚未成功,同志仍需努力啊,实习的同时,也得准备 9 月的秋招啊。
学习福利
【Android 详细知识点思维脑图(技能树)】
其实 Android 开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司 19 年的面试题。把技术点整理成了视频和 PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
网上学习 Android 的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
**本文已被[CODING 开源项目:《Android 学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](
)
收录**
最后自我介绍一下,小编 13 年上海交大毕业,曾经在小公司待过,也去过华为、OPPO 等大厂,18 年进入阿里一直到现在。
深知大多数初中级 Android 工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此也是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
评论