小米Android开发工程师实习(一、二、三面)
2022年已经悄然来到8月份,也将马上步入9月份了,到了秋招的时候,对于Android开发者们,也是听到、看到了很多不太利好的消息,像“90后姑娘失业后每天假装上班”也冲上热搜令人难以感叹,这也着实让大家对自己的前途感到迷茫。
其实近些年来,很多人都在不断地唱衰Android的发展趋势,虽然Android热度不如从前,随着行业的发展,各大厂对于从业者的要求也越来越严格,但其实那些基础知识扎实、开发技能过硬的开发者依旧是各大厂争相抢夺的香饽饽,很多大厂对于中高级Android开发者仍旧求贤若渴。
一面
(约为50min左右)
- 自我介绍(要对自己的简历要熟悉,不要因为简历而让面试官对自己的印象不好)
- 介绍一下线程池的几个参数。
- 知道哪些Java中的容器,HashMap和HashTable的区别,是否线程安全。
- 知道哪些排序算法,冒泡和归并的时间复杂度。
- Activity的启动周期,Activity之间切换和按home键时的生命周期变化。
- 介绍一下自己的项目。(疯狂拉扯,根据面试官的各种问题进行一一解答与分析)
二面
(将近一个半小时)
- 平时怎么学习Android的?
- 有没有关注最新版本Android的新特性。
- 抽象类和接口的区别,说自己的理解。
- 数组和链表的区别。
- 了解什么设计模式,手写一个自己常用的单例模式。
- HashMap、HashTable和ConCurrentHashMap的区别。
- HashMap的原理,ConCurrentHashMap中的锁是怎样的。
- ArrayList 与 LinkedList 区别,是否线程安全。
- int 和 Integer 用==来比较的不同情况。
- sychronized的使用方法,修饰代码块时多个进程执行的情况。
- Android不同启动模式并举例使用场景。
- Android中如何使用多线程,怎么关闭线程。
- 如何完成线程A完成后同时线程B开始,线程B完成之后线程C开始。如何完成线程A和线程B都完成后,再通知线程C开始。
- 假如需要关闭Activity,保证下载线程继续执行。
- Service的开启方式,两种开启方法的区别。
- 如果Service使用startService()启动,如何再进行Activity和Service之间的通讯。
- 说一下IntentService的原理。
- 广播的两种类型,为什么本地广播只能在本进程中接收到。
- 自定义view的绘制过程,每个过程的具体作用。
- 自定义view中onMeasure()和onLayout()在viewgroup和子view的调用顺序。
- 自定义view中onMeasure中的MeasureSpec有哪些。
- 知道动态权限吗?
- 平常使用模式开发(MVC、MVP、MVVM),为什么。
- 介绍自己两个项目。
- 算法:判断链表中是否有环。
三面
(50min左右)
- 询问个人情况和实习时间。
- 分别解释Java 面向对象的三个特性——封装、继承、多态
- 重写和重载的区别
- 访问控制符的种类和异同
- final的使用方法及不同修饰情况下的区别
- static的使用方法
- finally的使用方法,try里return了finaly的代码块还会不会继续执行
- 死锁的产生条件和解决方法
- 线程池的原理和种类
- 多线程中sleep()和wait()的区别
- 介绍自己的两个项目
- 算法:输入一个十进制数a和2~32的整数n,将a转化为n进制数,以字符串输出。
公众号:Android Jasper 专注分享面试题|面试技巧|Android学习资料。(dd:16)
#小米##Android开发实习##面试##小米实习#