一面
自我介绍,因为提到了大学课程的安卓学的很浅,基本上靠自学,问了一下怎么学习的
计算机网络
tcp和udp的区别
怎么理解有连接和无连接
http和tcp的区别
get和post有什么区别
怎么选择get和post
开发使用的是java还是kotlin,回答主要使用java,有学过Kotlin一年,然后开始问java基础
怎么理解面向对象
我背书贼拉跨,说了一下自己的理解
有没有了解除了面向对象的其他语言
抽象类和接口的区别
内部类访问的外部类变量为什么要用Final修饰,当时声音听的不是很清楚,当时没反应过来,后来复盘的时候知道原来问的是这个
final有什么用
final的回答里面提到了final变量能够通过反射强制修改,但是会有可见性问题,面试官顺着开始问多线程
怎么实现多线程
多线程同步,提到了重入锁,cas自旋锁,随后面试官让简单说一下这些锁
synchronized修饰太重了,如果只想要保证可见性怎么办 volatile,为什么可以保证可见性,答会强制从主内存获取最新
sleep和wait的区别,答的不是很好这里,基本上没答上
android部分
经典activityA->activityB生命周期调用顺序
activity启动模式 ,随后让简单说一下四个启动模式
singleTop,singleTask,singleInstance的生命周期多了一个什么环节 onNewInstance,这里没答上,面试官告诉了正确答案
service启动模式 哪个启动模式的生命周期更长 这里理解错了,我理解是bind的生命周期有四个,start只有三个,面试官想问service的回收,就是startService不会跟随activity销毁,bind会跟随绑定的所有activity销毁后跟随销毁
因为平时开发没怎么用到,理解不是很好,这里答错了,面试官很耐心的解释了
广播,有用过嘛 答:很少 问:如果接到需求会用嘛 答:知道,broadcastreceiver接受,sendBroadCast发送,随即引申到跨应用传递数据
intent binder 广播 cp,背书不熟练忘记了cp,哈哈,本人真的记忆不好
程序内部广播 答 本地广播,不会传递到外部,所以效率更高
算法
反转链表
二面
上来互相做了一个自我介绍
主要问项目,中途问了mmkv,答不会(没用过),没有什么八股文,算法是给链表头节点,求倒数第k个节点,快慢指针,给题的时候就问思路,答快慢指针,五分钟写了,牛客的算法系统出了点小问题,但是无伤大雅
反问
工作地点在哪 北京
还有三面嘛 应该没有了
总体自我感觉还行,许愿offer,今年不好找工作啊,早点上岸早点安心
#面经##面试##小米科技##安卓开发##Android#