写点什么

offer 求比较 + 部分大厂 Android 面经 + 真题解析 (1),覆盖所有面试知识点

用户头像
Android架构
关注
发布于: 刚刚

就行业大环境来说的话,感觉应届应该去大厂。感觉面试才是第一步,完了收到一堆 offer 还要进行选择。


主要疑问有:大厂镀金真的非常重要吗?但部门是否也有影响?挺欣赏猿辅导 work and life balance 的理念,不知道实际情况是否真的是这样?


刚出校门,职场方面关注的不多,很多都还不太了解,希望有大佬能够指点一下吧。


面经分享

下面是 OPPO 技术面的面经(总体感觉上好像并没有什么特别的难度吧)


其他公司的面经另外有做整理,有兴趣的朋友可以自己去看【指路 ↓】【https://www.jianshu.com/p/4d30f01372c9

一面

  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、HashTa


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


ble、ConcurrentHashMap 的原理


8.计算机网络五层模型


9.http 状态码


10.你遇到的最难解决的问题?我说实习公司项目没有采用动态加载框架,但是后面集成 U3D 项目需要动态加载,但只需要用到 so 和资源动态加载,功能上第三库也不支持我们的需求,我就自己硬着头皮看了各大版本的源码,支持动态修复替换加载 so 和 assets 资源动态修复加载,然后把具体的细节说了一遍。

个人体会

**面试最重要的就是心态吧,平常心,不要紧张,**只有这样才能展现出自己最好的状态,过度的紧张会阻碍你的语言表达,最起码的一点,这会给人一种你很不自信的印象。


我觉得自己的面试之所以这么顺利,很大一部分原因是做了系统的复习吧。


我一开始也有些不自信,担心技术题会有自己不会的内容,担心最新的技术点不了解,担心被问到项目说不出,甚至担心自己的简历写得不够好。


但是,闭关一个星期,系统的复习了一整套后,自信又回来了。


【其实我的复习资料也是白嫖的,现在网上的资料虽然多,但是内容质量稂莠不齐,很难遇到这这么全面,有条理,有系统的资料了。附上白嫖地址:GitHub大家可以自己去取。】


全部资源有些多,不可能全部放上来,大家可以自己先看看对自己有没有用吧。



用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
offer求比较+部分大厂Android面经+真题解析(1),覆盖所有面试知识点