android字节跳动一面面经
这回面试官好好看了一下我的简历,问的多数是安卓开发相关。
- Java中final关键字的作用
- Java中static方法能否被重写?为什么?
- 进程和线程的区别?
- Object常用的方法(答了toString()、hashCode()、equals()方法)
- HashMap的底层原理?如何解决哈希冲突?
- 在Java中如何让两个线程串行?(答了Rxjava、阻塞队列、加锁、join方法,面试官一直在问还有吗?)
- 在项目中用到过哪些热门技术?挑其中一个最熟悉的说一下原理(答了Retrofit)
- 对APT的理解?为什么注解技术是必要的,为什么不能用接口代替?(答了接口侵入性比较强,感觉不太对)
- 自定义View的流程,对onMeasure和onLayout方法的理解?
- 如何布局两个按钮,横向居中,竖直按百分比布局(答了可以用约束布局,用相对布局的话可能需要布局嵌套)
- 对onDraw方法的理解,如何绘制一个渐变图像和圆环?(答了可以用两个图形做差)
- 安卓动画种类,如何在自定义View当中实现动画(答了可以开辟线程进行属性变更,类似一个插值器,感觉不是面试官想要的答案)
- 熟悉什么设计模式?单例模式的安全性?
- 为什么需要双重校验锁,加一次锁可不可以?
- 在使用MVVM的时候,抽象Activity和Fragment有什么意义(这个是我自己封装的,主要是简化MVVM的构建)
- 算法题:翻转链表,从n开始翻转到最后。