给还在5月份迷茫的Android程序员分享一份面经

前言

在这里插入图片描述

一眨眼又到到了5月份了,金三银四转瞬即逝,到这个时候,没有找到工作的我们都应该反思一下自己,这些天都做了什么?之前的面试总结了吗?我们接下来应该怎么做。

虽然新冠疫情的已经过去不少时间,但是还是有很多程序员都失业了,不少公司倒闭,现在更多的公司依旧不景气。导致今年的互联网环境太差,需要自己有足够的知识储备,才能够应对这凌冽的寒风。

在这里我自己整理了一下在科大讯飞面试中的一、二、三面被问到的问题,现在分享给大家,希望能帮助到各位求职的小伙伴。

一面

一面问的问题大多是开放性问题,主要是看个人思路吧。

1.手撕依赖关系树扫描算法(期间提了不重复扫描、优化时间复杂度等要求)
2.简述如何实现未知长度的数组翻转?
3.简述内存泄漏,你处理过哪些内存泄漏?
4.以100ms/张的间隔时间播放100张图片,且每张图片需要400ms进行加载,如何设计?
5.如何在无序数组中快速找到最小值(手撕二分查找算法)
6.简述Android中的ANR,以及为什么会出现ANR?
7.简述Handler消息机制(深挖内部实现原理)

二面

1.手撕一个有序数组的二分查找算法
2.列举一个你在实际项目中所进行的性能优化(深挖具体细节)。
3.简述单例模式的实现方式,且单例模式有什么优缺点?
4.简述Java的异常处理机制
5.多线程间如何进行信息通信?
6.多线程如何保证线程安全?
7.简述线程池
8.简述HashMap实现机制,如何解决HashMap的线程安全问题?
9.TCP和UDP的区别,分别有哪些应用场景?
10.简述七层网络模型
11.简述Android点击事件的分发机制
12.画一个BLE APP的功能架构图

三面

三面相当于是综面和HR面和在一起了,主要问题也是分两个模块。

业务类问题:
1.手绘Class间依赖关系图
2.聊聊如何处理并发编程
3.手撕消费者模型代码,主要线程安全、队列等情况。
4.简述Android系统的类加载机制
5.Activity的生命周期通过什么机制来通知?

HR类问题:
1.聊聊个人的职业规划
2.你最大的优点是什么?
3.你有哪些方面待改进?
4.简述你大学所做的事情
5.说说你大学里最遗憾的事情
如果你和舍友产生了矛盾,如何处理?

文末

更多的最新Android中高级面试题汇总+解析扫码免费领取!

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Android中高级面试必知必会 完整文档的可以加微信 即可免费领取!(承诺:100%免费)

接下来我们针对【字节跳动】、【腾讯】、【阿里巴巴】一线互联网大厂等最新收集整理 Android 中高级面试展开的完整面试题

img

一. 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不被杀死 ?

​ ● Service与Activity怎么实现通信

​ ● 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是否一定处于一个线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值