(我个人觉得还可以,个人还是比较喜欢搞开发的吧,但是薪资待遇方面没有上面的好)
3.字节跳动 效率工程部,可能是做lark?
(最近出的事情挺多,字节这个公司也算是处于风口浪尖了,很多朋友还说我这是49年入国军,但是我个人还是挺喜欢这个公司的企业精神的)
4.猿辅导
(这个不在求职计划内,是在软件里面收到的邀请。和负责招聘的小姐姐聊了一下,感觉薪资待遇方面还是不错的,就投了简历,约了面试)
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机制
最后
由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。
的答案,我整理成了一份PDF文档,这份文档还包括了还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。