300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android面试之今日头条/字节跳动 android社招面试(附答案)

android面试之今日头条/字节跳动 android社招面试(附答案)

时间:2022-04-01 03:26:54

相关推荐

android面试之今日头条/字节跳动 android社招面试(附答案)

一面

自我介绍 注意点:说有亮点的、跳槽原因,从各个点尽力彰显自己优势、技术特长 手写代码:计算View树上所有view的数量,参数ViewGroup 本质上就是数据结构多叉树递归层序遍历+Android View基本api调用

public int getCount(ViewGroup viewGroup){int count=viewGroup.getChildCount();//循环获取子Viewfor(int i=0;i<count;i++){View child=viewGroup.getChildAt(i);if(child instanceof ViewGroup){//如果子View是ViewGroup,则用递归获取子View数量int childCount = getCount((ViewGroup)child);count+=childCount;}else {count++;}}return count;}

Android相关 主线程Looper一直循环查消息为何没卡主线程?

线程的阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。主线程Looper从消息队列读取消息,当读完所有消息时,主线程阻塞。子线程往消息队列发送消息,并且往管道文件写数据,主线程即被唤醒,从管道文件读取数据,主线程被唤醒只是为了读取消息,当消息读取完毕,再次睡眠。因此loop的循环并不会对CPU性能有过多的消耗。

RecyclerView相对ListView区别?

i. 布局效果上

ii. 缓存机制上Bitmap resize相关,设置option,decode 项目相关 用MultiDex解决何事?其根本原因在于?Dex如何优化?主Dex放哪些东西?主Dex和其他

Dex调用、关联?Odex优化点在于什么?答案:MultiDex解决方法数65535的限制问题,即方法数不能超过65535个;方法id是short类型4个字节来存储的,所以数目范围应在0-2^32即0-65535;MultiDex工作原理分析和优化方案; 主dex中:应用启动就必须加载的类,有一个keep文件来控制;其他dex文件都是通过主dex加载进来的;odex优化点:预加载;Dalvik和Art虚拟机区别?多渠道打包如何实现(Flavor、Dimension应用)?从母包生出渠道包实现方法?渠道标识替换原理?Android打包哪些类型文件不能混淆?

a. 四大组件

Retrofit主要实现机制? Retrofit的作用、原理动态代理静态代理区别? 架构 模块化怎么做?怎么设计?接口发现暴漏怎么做?基于什么基本思想?MVC、MVP、MVVM应用和彼此本质区别?

二面

Glide缓存特点问了擅长哪个方向?回答UI动画,所以就问UI相关的 launcher应用抽屉,之前有个毛玻璃效果背景,从系统ROM角度说下怎么做?实时的睡眠水面倒影效果怎么做? 实时更新的UI性能如何保证?UI基础:Measure、Layout、draw大流程、绘制顺序,FlowLayout怎么实现?flowlayout实现 算法题 两个线程分别持续打印奇数和偶数,实现两个线程的交替打印(从小到大)

public static void main(String[] args){Counter counter=new Counter();new Thread(new PrintOdd(counter)).start();new Thread(new PrintEven(counter)).start();}static class PrintOdd implements Runnable {public Counter counter;public PrintOdd(Counter counter) {this.counter = counter;}@Overridepublic void run() {while (counter.value<=100){synchronized (counter){if(counter.odd){System.out.println(Thread.currentThread().getName()+":"+counter.value);counter.value++;counter.odd=!counter.odd;counter.notify();}try {counter.wait();} catch (InterruptedException e) {e.printStackTrace();}}}}}static class PrintEven implements Runnable {public Counter counter;public PrintEven(Counter counter) {this.counter = counter;}@Overridepublic void run() {while (counter.value<=100){synchronized (counter){if(!counter.odd){System.out.println(Thread.currentThread().getName()+":"+counter.value);counter.value++;counter.odd = !counter.odd;counter.notify();}try {counter.wait();} catch (InterruptedException e) {e.printStackTrace();}}}}}static class Counter{public int value = 1;public boolean odd = true;}

模块化、工程化架构思想

三面

设计个IM客户端以及数据库架构,类似微信,偏上层业务部分的会话、联系人、通知、

公众号如何存、分几张表,架构每一层都是什么,互相怎么交互工作?

四面-HR

一般都会过

参考

面试字节跳动社招,我工资涨了60%,附带面经

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。