2021年大厂Android高级面试题分享,赶紧学起来
2021/7/4 23:20:54
本文主要是介绍2021年大厂Android高级面试题分享,赶紧学起来,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
## 面经分享 我是那边的朋友帮忙内推的,简历通过后电话约的面试。 当时约的是 10:30 的面试时间,我提前了二十机分钟左右到达公司楼下。公司楼层有点复杂,花了十分钟左右到目的地(约的食堂)。 第一轮是两个面试官轮流问问题。第一面大约面了一个小时到了 11:40差不多到饭点了。面完我就准备走了,两个面试官要我等会,然后就直接去叫二面的面试官了,我就在食堂看大家吃饭。 大约等了十几分钟第二面的面试官把我叫到了 31 楼。 也是两个面试官,轮流问了大概一个小时。二面后就差不多到了下午一点,面试官带我去食堂吃了个饭,然后帮我约了下午两点的 HR 面。 整个流程下来挺爽的,总共三轮面试,两轮技术面(都是2个面试官),一轮 HR 面。 #### 技术一面 1. 常 见 的 Activity 类 型+描述Activity 生命周期 Activity 从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回 调方法,这些回调方法包括:onCreate onStart onResume onPause onStop onDestroy 其实这些方法都是两两对应的,onCreate 创建与 onDestroy 销毁; onStart 可见与 onStop 不可见;onResume 可编辑(即焦点)与 onPause。。 2. 两个 Activity 之间跳转时必然会执行的是哪几个方法? 一般情况下比如说有两个activity,分别叫A,B,当在A里面激活B组件的时候, A 会调用 onPause()方法,然后 B 调用 onCreate() ,onStart(), onResume()。 这个时候 B 覆盖了窗体, A 会调用 onStop()方法. 如果 B 是个透明的,或者 是对话框的样式, 就不会调用 A 的 onStop()方法。 3. 系统是怎么帮我们启动找到桌面应用的 我说通过意图,他说怎么找到是哪个意图? 我说 PMS 会解析所有 apk 的 AndroidManifest.xml ,如果解析过会存到 package.xml 中不会反复解析,PMS 有了它就能找到了。 4. 横竖屏切换时 Activity 的生命周期 跟清单文件里的配置有关系。 不设置 Activity 的 android:configChanges 时,切屏会重新调用各个生 命周期默认首先销毁当前 activity,然后重新加载。 设置 Activity android:configChanges="orientation|keyboardHidden|screenSize"时,切 屏不会重新调用各个生命周期,只会执行 onConfigurationChanged 方法。 通常在游戏开发, 屏幕的朝向都是写死的。 5. 屏幕适配的处理技巧都有哪些 手机自适应主要分为两种情况:横屏和竖屏的切换,以及分辨率大小的不同。 6. 网络优化的问题 同一个 ip 同一个端口能复用一个连接,后面问道了 http 2.0 的多路复用,我说一个 tcp 可以多个请求,原理呢?我说不知道。后面让我说了下 https 。 7. 快排和递归 8. 数组和链表的区别 #### 技术二面 1.存储数据的几种方式:SharePreference、数据库、文件 2.使用安卓数据库时,有哪些生命周期方法:onCreate、onUpgrade 3.如果要给数据库增加字段,需要怎么做? * 方法1:通过alter table add column来做 * 方法2:先给旧表改名,然后建一张新表包含新的字段,再将旧表数据迁移过去,最后删除旧表 4.数据库读写是线程安全的吗? * 读操作是线程安全的:多个线程或进程读取同一个数据库的内容,是可以的。 * 写操作多个线程操作会抛异常(我感觉这里不能直接说线程不安全吧,因为SqlLite确实是有锁机制的):在多进程或多线程中使用sqlite,同时操作同一个数据库的话,会导致异常抛出。不同线程或实例化多个SqliteOpenhelper来操作同一个数据库,也会导致同样的问题。但不同线程使用同一个sqliteopenhelper来获取SqliteDatabase进行操作的话,是可以的。 5.SharePreference的实现原理,是不是线程安全的,apply和commit有什么区别? commit方法是有一个boolean的返回值,当数据变化进行存储时是一个原子性的操作,当两个editor对象同时对一个共享的preferences参数进行操作时,永远都是最后一个调用commit方法的editor变更了最后的数据值。 apply方法是没有返回值的,当两个editor同时对preferences对象编辑时,也是最后一个调用apply方法的对象编辑数据。apply的提交操作也是原子性的,但是只提交到内存,速度更快。 6.Handler机制 7.HashMap、HashTable、ConcurrentHashMap的原理 8.计算机网络五层模型 9.http状态码 10.你遇到的最难解决的问题? 我说我们公司项目没有采用动态加载框架,但是后面集成 U3D 项目需要动态加载,但只需要用到 so 和资源动态加载,功能上第三库也不支持我们的需求,我就自己硬着头皮看了各大版本的源码,支持动态修复替换加载 so 和 assets 资源动态修复加载,然后把具体的细节说了一遍。 最后,如果大伙有什么好的学习方法或建议欢迎大家在评论中积极留言哈,希望大家能够共同学习、共同努力、共同进步。 **小编在这里祝小伙伴们在未来的日子里都可以 升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰!!** > 不论遇到什么困难,都不应该成为我们放弃的理由! 很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,需要一份小编整理出来的学习资料的[关注我主页或者点击我的GitHub免费领取~](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 学习,面试文档,视频收集大整理**,有兴趣的伙伴们可以看看~ 如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。这篇关于2021年大厂Android高级面试题分享,赶紧学起来的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路