面试字节跳动Android岗,共面三次,前两面技术面,最后一面boss面。面试过程记录如下:
一面
(注重基础,计算机网络、操作系统、数据结构、算法、简历项目)
-
算法题:刚开始面试官出“生产者消费者模型”,但本科不太熟悉算法类,所以先开始问基础
-
计算机网络:TCP\UDP的特点阐述、TCP的拥塞控制策略
-
数据结构:熟悉的数据结构有哪些以及它们的特点阐述
(答:链表、数组、队列、栈、树、图)链表采用指针相连,在内存中地址不连续。数组是内存分配的一整块,元素位置相连、队列是先进先出的、栈是先进后出、树是一对多的一种数据结构、图是多对多的网状结构。
对链表和数据进行插入、删除操作有什么不同?查找操作在链表和数组中谁快? -
算法:排序算法熟悉哪几种,它们的时间复杂度、空间复杂度、稳定性
实现快排
二面
偏向于招聘岗位的实际应用知识 Android岗的要求
- Android的四大组件、activity是什么?Service是什么?Content provider是什么什么时候用?
- 广播熟悉嘛?是什么?
- http的状态码有哪些?
- Java的线程怎么写?
- 实现反转链表
boss面
不关心实际技术,主要考察代码习惯,学习热情
- 算法题 :求最长不重复子串、判断一个字符串是否是合法IP地址
- 个人问题:平时学习语言的途径有哪些?推荐基本比较好的c++书或者视频?练习c++的方式有哪些?平时自己会看些什么公众号或博客?