百度移动软件研发提前批二面:1h
1.介绍项目,具体工作
2.使用activity还是fragment,fragment切换的方法,fragment切换的生命周期
3.项目使用ViewModel和livedata,介绍一下他们,讲一下实现原理,livecycle用过吗,说一下
4.项目使用mvvm模式,说一下mvc,mvp,mvvm模式的区别吧
5.livedata为什么能做到数据更新,任何时候都能更新吗,(onStart后才行,我答成了onResume)
6.项目里提到内存泄露,讲一下内存泄漏和内存溢出吧,内存如何判断一张图片有多大
7.项目内用到单例模式,说一下单例模式的实现方法
8.枚举为什么能实现单例模式,这样的单例模式是线程安全的吗
9.懒汉式双重检测说一下
10.java的锁有哪些,区别是什么
11.synchronized的锁升级过程
12.线程同步的开销,系统调用
13.listview和recyclerview的区别
14.recyclerview的缓存复用说一下
15.recyclerview如何实现多个模板item的,说一下原理
16.算法:rand7生成rand10(一开始没搞懂意思,因为是面试官口头描述,在本地ide打代码,就是一个生成1-7的随机数的方法,如何生成1-10的随机数,要保证概率,以及能生成1-10)
17.算法:描述一下快排的方式,时间复杂度,最坏,最好,如何优化
反问环节:问了是否用过kotlin,面试官说现在java,kotlin都有,但后面会逐步转入kotlin
面试官的评价是原理类的东西还需要探究,深度还不够(批评的很委婉哈哈)
#百度面试#