2020年7月2日,覃超线上直播课,秋招知识问答。
字节跳动招什么样的人?
技术面试:
-
技术优秀
-
计算机基础
-
系统设计
-
代码和语言
-
算法和数据结构
HR面试:
-
坦诚正直
-
持续学习
-
团队协作
-
责任心,主动积极
-
逻辑思维,长线思考
面试流程:
-
至少三轮技术面试(语言不重要,熟练度很重要)
-
至少一轮HR面试(HR面试也很重要)
有好奇心,心态积极,延迟满足感,有判断力,不甘于平庸
-
每一轮技术面试都可能考代码(代码不止考算法,也考mysql)
-
每个流程可能会多天完成(一轮面试耗时一般一小时)
常考知识点
-
线程与进程
线程之间会相互影响,所以才有信号量。关键不是互相影响,而是互相通信。
进程和线程之间区别,考得很多。
-
TCP和UDP
TCP保证传输可靠,而UDP对可靠性没有保证。
UDP支持一对一、一对多、多对多,而TCP连接只能点对点。
TCP提供可靠交付,有流量控制,拥塞控制,提供全双工通信。
-
数据库索引
可以大大加快数据的检索速度,这是创建索引最主要的原因。
索引的实现通常使用B树及其变种B+树。
添加索引会增大数据库的存储空间。
加索引是把数据放入二叉搜索树,输入和删除操作会变慢。
-
Java关键字volatile的作用
它所修饰的变量不保留现成memory的拷贝,直接访问主内存中的变量。
在一个线程的memory中的值可能与另外一个线程memory中的值不一致,或者与main memory中的值不一致的情况。
在Java内存模型中,有main memeory,每个线程也有自己的memory(例如寄存器)
-
红黑树和AVL的区别:
AVL为严格平衡的二叉搜索树:所以是最高效。但当修改操作太多,需要调整的太多,此时不适合。数据库采用(读比较多,写比较少)
红黑树:近似平衡的二叉搜索树。
-
布隆过滤器的定义和特征:
它是一个很长的二进制矢量和一系列随机映射函数。
布隆过滤器说某个元素在,可能会被误判。
布隆过滤器说某个元素不在,那么一定不在。
-
关于JDK 1.8 hashmap的说法,正确的是
插入、获取的时间复杂度基本是O(1)(前提是有适当的哈希函数,让元素分布在均匀的位置)。
如果超过了负载因子(默认0.75),则会重新resize一个原来长度两倍的HashMap,并且重新调用hash方法。
冲突处理的底层实现是链表,JDK1.8后又加了红黑树;treeify的阈值是8。链表长度大于8,链表转换为红黑树存储。
-
位运算n&(n-1)所实现的操作
整数n的最低二进制的1变成0。
-
适用动态规划求解的问题一般应具有哪些特征?
满足最优化原理。
待解决问题存在重叠子问题。
具有最优子结构性质。
当问题规模缩小到一定规模后,一般就比较容易解决。
-
将ABCD四个元素次序进栈(中间可能有出栈操作),则可能的出栈序列是:
BDCA
一个简单的快速判断方式:如果后面的元素先出来了,在它前面进入的元素必须逆序输出。比如:DABC一看就是错的,D先出来了,那么ABC必须是逆序输出。
-
在有序链表/AVL树/有向图/无序数组,这四种数据结构中,具有最高查找性能的数据结构是?
AVL树
面试基础知识
-
语言/多并发/数据库 + 缓存/其他
正确对待面试
- 作为和未来同事的一次合作
- 并肩作战,解决问题
- 减少压力(一定要积极的沟通和表达)
学习算法的最大误区
- 光看不练
- 只练一遍
- 没有反馈
注:kahoot,一款知识问答网站。