offer 求比较 + 部分大厂 Android 面经 + 真题解析,给 2021 的 Android 一些建议
5.贝壳找房 移动端研发工程师(薪资方面就是普遍的水平吧,但是,这个方向个人还是挺喜欢的)
6.网易 网易云音乐(对网易这个公司还是蛮有好感的)
7.哔哩哔哩,应该是 b 站客户端方向(正常薪资,方向还行)
8.腾讯 CSIG 智慧出行事业部 客户端开发(都还可以吧,但是也没特别的感觉,福利方面有喜欢的游戏方面?)
9.华为 消费者 BG 事业部 安卓开发(这个还算是比较喜欢吧,虽然薪资方面不是最高的,关键是逼得比较急,可以下决定的时间不多了,大概率是一直等到 offer 失效吧)
10.浦发银行(这个和华为差不多)
个人思考
就行业大环境来说的话,感觉应届应该去大厂。感觉面试才是第一步,完了收到一堆 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、HashTable、ConcurrentHashMap 的原理
8.计算机网络五层模型
9.http 状态码
评论