offer 求比较 + 部分大厂 Android 面经 + 真题解析 (1),覆盖所有面试知识点
就行业大环境来说的话,感觉应届应该去大厂。感觉面试才是第一步,完了收到一堆 offer 还要进行选择。
主要疑问有:大厂镀金真的非常重要吗?但部门是否也有影响?挺欣赏猿辅导 work and life balance 的理念,不知道实际情况是否真的是这样?
刚出校门,职场方面关注的不多,很多都还不太了解,希望有大佬能够指点一下吧。
面经分享
下面是 OPPO 技术面的面经(总体感觉上好像并没有什么特别的难度吧)
其他公司的面经另外有做整理,有兴趣的朋友可以自己去看【指路 ↓】【https://www.jianshu.com/p/4d30f01372c9】
一面
常 见 的 Activity 类 型+描述 Activity 生命周期 Activity 从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回 调方法,这些回调方法包括:onCreate onStart onResume onPause onStop onDestroy 其实这些方法都是两两对应的,onCreate 创建与 onDestroy 销毁; onStart 可见与 onStop 不可见;onResume 可编辑(即焦点)与 onPause。。
两个 Activity 之间跳转时必然会执行的是哪几个方法?一般情况下比如说有两个 activity,分别叫 A,B,当在 A 里面激活 B 组件的时候, A 会调用 onPause()方法,然后 B 调用 onCreate() ,onStart(), onResume()。 这个时候 B 覆盖了窗体, A 会调用 onStop()方法. 如果 B 是个透明的,或者 是对话框的样式, 就不会调用 A 的 onStop()方法。
系统是怎么帮我们启动找到桌面应用的我说通过意图,他说怎么找到是哪个意图? 我说 PMS 会解析所有 apk 的 AndroidManifest.xml ,如果解析过会存到 package.xml 中不会反复解析,PMS 有了它就能找到了。
横竖屏切换时 Activity 的生命周期跟清单文件里的配置有关系。不设置 Activity 的 android:configChanges 时,切屏会重新调用各个生 命周期默认首先销毁当前 activity,然后重新加载。设置 Activity android:configChanges="orientation|keyboardHidden|screenSize"时,切 屏不会重新调用各个生命周期,只会执行 onConfigurationChanged 方法。 通常在游戏开发, 屏幕的朝向都是写死的。
屏幕适配的处理技巧都有哪些手机自适应主要分为两种情况:横屏和竖屏的切换,以及分辨率大小的不同。
网络优化的问题同一个 ip 同一个端口能复用一个连接,后面问道了 http 2.0 的多路复用,我说一个 tcp 可以多个请求,原理呢?我说不知道。后面让我说了下 https 。
快排和递归
数组和链表的区别
二面
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
ble、ConcurrentHashMap 的原理
8.计算机网络五层模型
9.http 状态码
10.你遇到的最难解决的问题?我说实习公司项目没有采用动态加载框架,但是后面集成 U3D 项目需要动态加载,但只需要用到 so 和资源动态加载,功能上第三库也不支持我们的需求,我就自己硬着头皮看了各大版本的源码,支持动态修复替换加载 so 和 assets 资源动态修复加载,然后把具体的细节说了一遍。
个人体会
**面试最重要的就是心态吧,平常心,不要紧张,**只有这样才能展现出自己最好的状态,过度的紧张会阻碍你的语言表达,最起码的一点,这会给人一种你很不自信的印象。
我觉得自己的面试之所以这么顺利,很大一部分原因是做了系统的复习吧。
我一开始也有些不自信,担心技术题会有自己不会的内容,担心最新的技术点不了解,担心被问到项目说不出,甚至担心自己的简历写得不够好。
但是,闭关一个星期,系统的复习了一整套后,自信又回来了。
【其实我的复习资料也是白嫖的,现在网上的资料虽然多,但是内容质量稂莠不齐,很难遇到这这么全面,有条理,有系统的资料了。附上白嫖地址:GitHub大家可以自己去取。】
全部资源有些多,不可能全部放上来,大家可以自己先看看对自己有没有用吧。
评论