有道的面试体验很好,面试官也很nice,其实自己三面感觉不太ok但是还是通过了,虽然自己最后决定放弃了这个offer。
一面是算法题和项目起手问,然后慢慢的拓展开问,感觉面试官想到啥就问啥。
二面的话就全面基础都问,看面经就知道。
三面就问项目,重点在思考了,问我不知道的,然后就给提示猜一下。
有道一面(45m)
实现整数反转(考虑负数)
int和Integer,装箱拆箱,两个的大小
对象头讲一下(因为说Integer大小的时候说到了对象头)
- 对象头:锁标志,GC标志等
- 还有填充数据忘了说!
异常,如果出现错误异常怎么接,有什么异常
泛型,类型擦除,实现一个泛型方法,泛型有什么用,有什么劣势
hashmap(原理,里面怎么哈希的,还有什么哈希方式,hashmap的大小(2的幂))
知道SparseArray吗?知道,没用过
图片的格式
- ARGB_8888 :32位图,带透明度,每个像素占4个字节
- ARGB_4444 :16位图,带透明度,每个像素占2个字节
- RGB_565 :16位图,不带透明度,每个像素占2个字节 (没有透明度,直接ARGB_8888位移即可)
- ALPHA_8 :32位图,只有透明度,不带颜色,每个像素占4个字节
ListView和RecyclerView(死磕ListView的ViewHolder)
有道二面(1h10m)
android
- 事件分发
- 原理,
- 举了一些例子分析:ScrollerView和ListView嵌套(我回答了滑动冲突,貌似还有需要注意的)
- View绘制
- 绘制流程
- canvas了解过吗(只用过圆形头像)
- 其他的View没了解过,SurfaceView)
- 源码(retrofit)
- ListView和RecyclerView(优劣势,ViewHolder,notify的区别,缓存区别)
- Handler原理
- 启动模式
- 区别
- 举了一些例子分析
- 架构MVVM,MVP,MVC,android的AAC架构没了解过
- 事件分发
操作系统
- 堆栈
- 进程状态和状态变化情况
- 进程调度方式
- 结合上面的,如果进程死循环怎么解决
- Handler如果一个message死循环怎么解决(这个在看源码的时候没注意到。。)
数据结构
- 完全二叉树和满二叉树
- List和Map
- 红黑树(原理,插入)
SQL(SQL的好多都忘了)
- 用没用过android的sqlite,怎么使用
- 写几句查询
- 多表查询
- sql的左联和右联
计网
- TCPHTTP
Java
- hashmap
- 冲突处理方法
- 如果是普通的map呢 -- 线性探测
- Synchronize和锁
- 线程安全版本的集合类
- 原理:对象头,偏向锁等。
- 例子:如果A已经在操作了,B如何获取A操作前的数(不知道)
- String, StringBuilder, StringBuffer
- 和C++对比,int,float和double。String呢
- hashmap
题目
- 画出一个n*n的棋盘(除了n+1for循环,有没有其他方法)
- 有序数组,找出相加为n的两个数字
- hashmap
- 从中间值开始往两边寻找
有道三面(1h)
- Android
- 投屏看项目(能问的都问了,像网络访问,聊天功能等,破项目拿不出手...)
- 接着上面,为什么又okhttp还要retrofit
- okhttp和retrofit设计模式上有什么异同?分别使用了什么?说一下大概原理。
- 看一下API访问和数据库访问的代码,随便一个接口讲一下(接口作用,注解含义,访问流程都讲了一遍)
- 聊天功能前后端如何对接,数据格式,如何保证实时显示?
- 如果让你重新设计聊天功能怎么设计?(因为我说我的聊天功能比较简单,而且采用暂存本地的方式不合理,这个回答的不好)
- 圆形头像怎么实现的?讲一下原理。其他自定义View怎么做
- 还问了很多别的,不记得了
- 算法题:判断两个链表是否相交(需要考虑有无环)
- 最后问了手头的offer情况
- 反问
全部评论
(4) 回帖