公司是哪里的?福州这边的规模?
最近负责的项目都涉及到了哪些方面?
线程间通信有哪些方式?
Handler机制的原理
Looper循环的退出条件?
这些东西你是怎么学的?
如果让你自己来实现Looper机制,你要怎么实现?
做过哪些方面的性能优化?
UI优化有哪些方式?
内存优化方式
怎么检测内存泄漏?用什么工具?
怎么定位卡顿问题?
BlockCanary的原理是什么?(我不知道…,就讲了自己的思考,如果自己来实现要怎么实现,包括方法调用栈的记录、方法执行时间等)
Android怎么做屏幕适配?
用的什么数据库?SQLite是什么样的一个数据库?
SQLite内部用到了什么样的数据结构?
SQLite是关系型数据库吗?确定吗?
知道哪些查找方法?
你觉得SQLite可能会用到哪些查找方法?
网络优化可以从哪些方面进行优化?(速度、成功率、流量消耗)
单链表和数组的区别?
单链表怎么找到倒数第n个结点?(第一反应答了2个思路,递归方式,和利用栈的特性去实现)
有没有更好的方式,给你3分钟时间思考。(1、双指针移动;2、先获取链表长度,从头节点往后遍历,同时计数,直到计数等于长度减去n,下一个结点就是了。时间复杂度O(n),栈的实现方式的时间复杂度也是O(n),但是需要额外开辟一个栈的辅助空间)
在学校里学过哪些计算机语言?
C和C++的区别是什么?
面向对象的语言有什么特性吗?
说一下C++里的多态
TCP有了解过吗?
TCP三次握手、四次挥手、停止等待协议、拥塞控制算法、滑动窗口机制
Activity的生命周期
OpenGL ES有了解过吗?
那Android中View的绘制流程有了解过吗?
讲一下View的绘制流程
自定义View需要注意哪些点?
有没有关注一些新的技术?
最近几年的技术规划,想往哪方面发展?
跨平台开发呢?比如混合开发或者是iOS?
人在福州,漳州人,为什么想来深圳?女朋友或者老婆不会有意见吗?
今天比较晚了,接下去还有算法考核,约一下时间。
算法
要求:
1.总时间45分钟,时间自由分配。
2.优先使用C/C++语言实现,不允许使用库函数。
题目:
1.实现一个算法找出单链表的倒数第K个元素
2.定义相关数据结构并实现一个解析器,输入为一个字符串,输出一个二叉树,其节点由{value, left, right} 组成,value是一个整形数,left是其左子树,right是右子树,如果没有子节点,使用null表示。
文法:
node: {integer, left, right}
integer: [0-9]+
left: node | null
right: node | null
假设输入字符串内容如下:
{10 ,
{ 5,
{4, null, null},
{7, null, null}
},
{12, null, null}
}
则解析出来二叉树如下:
10
/ \
5 12
/ \
4 7
最近做的项目
项目的架构
Hook进程是做什么的?
IM消息的格式
数据是怎么加密的?
不同格式的消息(文本,语音,图片,视频)在列表里是怎么展示的?
滑动的时候是怎么加载这些不同格式的消息的?
你们是怎么对图片进行加载的?
Bitmap的数据是放在Java内存中,还是Native内存中?
BitmapFactory.Options了解吗?
Binder缓存有了解吗?
Binder方法的阻塞与非阻塞
非阻塞用到哪个关键字?
IM里是怎么样建立长连接的?用到哪几行代码?
Socke通信建立连接后,有一个很重要的方法去维持这个长连接,是什么方法?
介绍一下多线程和HashMap
HashMap的扩容有哪两个过程?
HashMap是非线程安全的,那扩容的时候会发生死循环吗?举一个例子?
什么是ANR,什么情况下会发生ANR?ANR文件在哪个目录下面?
ANR文件如何分析?
有没有遇到两个线程发生死锁导致的ANR?
发生死锁导致ANR时,ANR文件里会有死锁的信息吗?
内存泄漏有没有了解过?
内存泄漏怎么解决?
可以使用什么工具去分析内存泄漏?
LeakCanary的内存泄漏检测原理是什么?
如果让你来实现内存泄漏的检测,要怎么实现?
Java里面的引用有了解过吗?
强引用、软引用、弱引用和虚引用,它们之间有什么区别?它们分别在什么时候被回收?
单链表怎么排序?
使用归并排序进行单链表排序时,怎么把一个单链表分成两个单链表?怎么一次遍历拿到单链表的中间节点?
单链表怎么判断有环?
怎么把一个字符串转换为数字?
0的ASCII码是多少?
Java字符串的结束符是什么?C呢?