写点什么

重磅来袭!全网最具深度的三次握手、四次挥手讲解

发布于: 2 小时前

OPPO 面试

第一面

1、手写算法题。猫扑素数;1 到 n,求 1 的个数;单词反转;


2、Activity 的加载模式。


standard,singleTop,singleTask,singleInstance。


3、什么时候会用到 singleTask?


在 MainActivity 的时候用到


4、Handler 机制?


5、一个线程是否只有一个 Looper?


6、如何保证一个线程只有一个 Looper?


7、多线程的方式有哪些?


8、ANR 异常发生条件


(1)5s 内没有响应用户输入事件


(2)10s 内广播接收器没有处理完毕


(3)20s 内服务没有处理完毕


9、如何分析 ANR?


10、自定义 View 和 ViewGroup


11、事件处理:分发,拦截,处理。


12、GC 算法


13、View 动画,属性动画,帧动画。再说下 View 和属性动画区别。

第二面

1、OkHttp 原理?


2、Retrofit 原理?为何用代理?代理的作用是什么?


3、ButterKnife 原理?用到反射吗?为什么?


4、ANR 异常如何查找并分析?


5、JVM 内存模型?性能调优?


6、垃圾搜集算法有哪些?G1 算法?


7、Http 和 Https 的区别?


(1)Https 是 ssl 加密传输,Http 是明文传输


(2)Https 是使用端口 443,而 Http 使用 80


(3)HttpsSSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议要比 Http 协议安全


(4)Https 协议需要到 CA 申请证书


8、加密算法有哪些?对称加密和非对称加密的区别?


(1)MD5,SHA1,Base64,RSA,AES,DES


(2)对称:使用相同密钥,需要在网络传输,安全性不高。


(3)非对称:使用一对密钥,公钥和私钥,私钥不在网络传输,因此安全性高。


9、TCP 的三次握手?两次行不行?为什么?TCP 攻击知道吗?如何进行攻击?


10、内存优化如何做?


11、看过那些源码?


12、会对代码进行 review 吗?何时 review?怎么 review?


13、项目中遇到的让你棘手的问题?多久解决,怎么解决?


14、平时如何学习?何时学习?怎么学习?学习渠道?

第三面

1、前几次面试感觉如何?


2、你现在的 APP 日活是多少?


3、你现在如何处理崩溃日志?


4、你觉得小团队好还是大团队好? 5 你的优点和缺点说下?


6、你的发展方向说下?是先讲究宽度还是讲究深度,为什么?


7、为什么离职?


8、其他小问题,如哪里人啊?现在工资怎样?要求如何,何时到岗啊?有什么问题要问我的吗?

腾讯

三轮面试 一面

1、算法题 通电小球


2、Android 沉浸式状态栏 怎么实现的


3、事件处理函数有哪几个,父 View 子 View 监听同一个事件,重写哪些方法。在哪个 View 重写?


4、ViewRootImpl 接受事件吗?


5、apk 编译打包流程 V1,V2 签名区别


6、利用 logging 监听方法耗时,会不会让 app 增大延迟。


7、插件化怎么加载资源的?


8、JVM 怎么保证 gc 效率跟线程运行效率的 ?


9、如果 android 没用对应的 view,flutter 能运行吗? 手写单例模式,volatile 跟 synchronized 区别?


10、接口暴露,但是不让别人调用,有哪些办法?

二面

1、为什么采用 flatbuffer? 比 Json 好在哪里?


2、如何处理 Crash,NativeCrash 呢?Google 是怎么做到的?如果上报过程中再次产生 Crash 能不能捕捉到?


3、uncaughtException 是被谁调用的,如果再次崩溃能不能捕获到?


4、Linux 是怎么知道 app 崩溃的,如果想要在被 kill 前 做一些耗时操作,该怎么做?


5、考虑设计一个 crash 捕捉模块。


6、100 万个数字求 100 个最大值。


7、手写快速排序算法。

三面 (GM 面)

1、kotlin 比 Java 好在哪里,是函数式编程吗?


2、如何防止 DNS 劫持?


3、如果让你实现一个调试器,你会怎么设计?静态调试?动态调试呢?

学习福利

【Android 详细知识点思维脑图(技能树)】



其实 Android 开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。


虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。


这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司 19 年的面试题。把技术点整理成了视频和 PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。


由于篇幅有限,这里以图片的形式给大家展示一小部分。



详细整理在 GitHub 点击可见;


Android架构视频+BAT面试专题PDF+学习笔记


网上学习 Android 的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

用户头像

VX公众号:编程进阶路 2020.11.28 加入

还未添加个人简介

评论

发布
暂无评论
重磅来袭!全网最具深度的三次握手、四次挥手讲解