三本毕业大龄程序员,失业109天,面试22家,收到4个offer,涨薪百分之十

352 阅读6分钟

前言

每次看到程序员字眼,都是褒贬同时出现的,啊你是程序员,你就秃头,肥胖,宅男……ICU、猝死、996 说的就是程序员,但是工资高啊!但只有程序员才知道,干 IT 的,都有一个自己的程序员梦,梦想着能用 “代码改变世界”。

代码能不能改变世界世界不知道,这逼工作是真不好找啊!无数次问到的问题再次被提及——程序员未来是不是会大量失业?疫情的时候不敢离职,开放了原以为行情要复苏了,结果更差了……

109和22这串数字我会永远记得

我刚刚结束了109天的失业生活,期间面试了22家公司。回顾这段日子,我的心情像窗外的雨滴一样低落。

在这里插入图片描述

我是一个三本毕业的程序员,这在很多人看来可能并不值得骄傲。在我毕业后的几年里,我一直在一家小型互联网公司工作,虽然工作还算稳定,但我总觉得自己的技术水平还有待提高。当我意识到这一点时,我决定要提升自己,于是我决定辞职,寻找更好的机会。

然而,现实并没有我想象的那么顺利。在失业的这段时间里,我开始感到焦虑和迷茫。我不停地投简历,参加面试,但是得到的回应却少之又少。每次面试失败,我都会对自己产生怀疑,甚至想过放弃。但是,我心里始终有一个声音告诉我:不能放弃,只要坚持下去,总会有机会的。

在失业的第109天,我终于收到了一个面试邀请。这家公司是我梦寐以求的,我为此做了充分的准备。在面试过程中,我展示了自己的实力,赢得了面试官的认可。就这样,我收到了4个offer,其中一个给我涨薪百分之十。这个消息让我兴奋不已,同时也给了我更大的信心。

回想起这段日子,我感慨万千。失业的日子虽然痛苦,但它也让我更加珍惜机会,更加努力。现在,我即将开始新的工作,我相信,只要我保持对技术的热情,不断学习和提高自己,我一定能够在这个行业中取得更大的成就。

最后,我想对所有正在找工作的朋友们说:不要放弃,坚持下去,胜利就在眼前。

以下是我这些天整理的面试题,希望找工作的朋友能用上。

由于文章内容比较多,篇幅有限,已经被整理成了PDF文档,有需要 Android中高级面试必知必会 完整文档

详细Vx关注公众号:Android老皮

一. Android面试相关

1.Activity

            ● 说下Activity生命周期
​
            ● Activity A 启动另一个Activity B 会调用哪些方法?如果B是透明主题的又或则是个DialogActivity呢
​
            ● 说下onSaveInstanceState()方法的作用 ? 何时会被调用?
​
            ● Activity的启动流程
​
            ● onSaveInstanceState(),onRestoreInstanceState的掉用时机
​
            ● activity的启动模式和使用场景
​
            ● Activity A跳转Activity B,再按返回键,生命周期执行的顺序
​
            ● 横竖屏切换,按home键,按返回键,锁屏与解锁屏幕,跳转透明Activity界面,启动一个 Theme 为 Dialog 的 Activity,弹出Dialog时Activity的生命周期
​
            ● onStart 和 onResume、onPause 和 onStop 的区别
​
            ● Activity之间传递数据的方式Intent是否有大小限制,如果传递的数据量偏大,有哪些方案
​
            ● Activity的onNewIntent()方法什么时候会执行
​
            ● 显示启动和隐式启动
​
            ● scheme使用场景,协议格式,如何使用
​
            ● ANR 的四种场景
​
            ● onCreate和onRestoreInstance方法中恢复数据时的区别
​
            ● activty间传递数据的方式
​
            ● 跨App启动Activity的方式,注意事项
​
            ● Activity任务栈是什么
​
            ● 有哪些Activity常用的标记位Flags
​
            ● Activity的数据是怎么保存的,进程被Kill后,保存的数据怎么恢复的

img

2.Service

            ● service 的生命周期,两种启动方式的区别
​
            ● Service的两种启动方式?区别在哪
​
            ● 如何保证Service不被杀死 ?
​
            ● ServiceActivity怎么实现通信
​
            ● IntentService是什么,IntentService原理,应用场景及其与Service的区别
​
            ● Service 的 onStartCommand 方法有几种返回值?各代表什么意思?
​
            ● bindService和startService混合使用的生命周期以及怎么关闭
​
            ● 用过哪些系统Service ?
​
            ● 了解ActivityManagerService吗?发挥什么作用

img

3.BroadcastReceiver

            ● 广播的分类和使用场景
​
            ● 广播的两种注册方式的区别
​
            ● 广播发送和接收的原理
​
            ● 本地广播和全局广播的区别

img

4.ContentProvider

            ● 什么是ContentProvider及其使用
​
            ● ContentProvider的权限管理
​
            ● ContentProvider,ContentResolver,ContentObserver之间的关系
​
            ● ContentProvider的实现原理
​
            ● ContentProvider的优点
​
            ● Uri 是什么

5.Handler

            ● Handler的实现原理
​
            ● 子线程中能不能直接new一个Handler,为什么主线程可以主线程的Looper第一次调用loop方法,什么时候,哪个类
​
            ● Handler导致的内存泄露原因及其解决方案
​
            ● 一个线程可以有几个Handler,几个Looper,几个MessageQueue对象
​
            ● Message对象创建的方式有哪些 & 区别?
​
            ● Message.obtain()怎么维护消息池的Handler 有哪些发送消息的方法
​
            ● Handler的post与sendMessage的区别和应用场景
​
            ● handler postDealy后消息队列有什么变化,假设先 postDelay 10s, 再postDelay 1s, 怎么处理这2条消息
​
            ● MessageQueue是什么数据结构
​
            ● Handler怎么做到的一个线程对应一个Looper,如何保证只有一个MessageQueue ThreadLocal在Handler机制中的作用
​
            ● HandlerThread是什么 & 好处 &原理 & 使用场景
​
            ● IdleHandler及其使用场景
​
            ● 消息屏障,同步屏障机制
​
            ● 子线程能不能更新UI
​
            ● 为什么Android系统不建议子线程访问UI
​
            ● Android中为什么主线程不会因为Looper.loop()里的死循环卡死
​
            ● MessageQueue#next 在没有消息的时候会阻塞,如何恢复?
​
            ● Handler消息机制中,一个looper是如何区分多个Handler的
​
            ● 当Activity有多个Handler的时候,怎么样区分当前消息由哪个Handler处理
​
            ● 处理message的时候怎么知道是去哪个callback处理的
​
            ● Looper.quit/quitSafely的区别
​
            ● 通过Handler如何实现线程的切换
​
            ● Handler 如何与 Looper 关联的
​
            ● Looper 如何与 Thread 关联的
​
            ● Looper.loop()源码
​
            ● MessageQueue的enqueueMessage()方法如何进行线程同步的
​
            ● MessageQueue的next()方法内部原理
​
            ● 子线程中是否可以用MainLooper去创建Handler,Looper和Handler是否一定处于一个线程
​
            ● ANR和Handler的联系