字节 抖音直播客户端 一面面经
记错时间,迟到了十分钟,万幸面试官跟HR人都很好。
面试时间:一个小时
流程:
自我介绍
之前接触过客户端吗?没接触过。
Java基础:
介绍面向对象的特征。封装,继承,多态
在项目中有具体使用过多态吗?重写方法
接口和抽象类的区别
介绍类加载机制
泛型解决了什么问题,上下界了解吗?没了解过。擦除呢?没了解过。
数据结构的源码了解吗?ArrayList和LinkedList的区别
HashMap的底层实现,为什么要用红黑树,如何解决哈希冲突
LinkedHashMap的底层实现,为什么要使用双向链表
Hashtable了解吗?和ConcurrentHashMap有什么区别?
线程池了解吗?有哪些参数?有没有自己使用过线程池?答的根据任务类型确定核心线程数,追问为什么要这么设置
Synchronized锁了解吗?它是可重入的吗?怎么实现?锁的升级了解吗?
介绍JVM的内存结构
GC了解吗?说了一大堆,包括怎么确定回收对象,垃圾回收算法,垃圾回收器。追问为什么要从引用计数法演变为使用可达性分析算法?不知道。
老年代里采用什么垃圾回收算法?答的是由垃圾回收器决定,后续说了CMS,面试官换了个问题,问标记清除算法和停时复制算法的优缺点;追问哪个的内存效率高一点
OS:
进程和线程的区别
线程间如何通信,答的信号量,面试官说这属于被动同步,有没有什么主动的方法?答了管道,不知道对不对
volatile关键字解决什么问题
操作系统里面怎么保证CAS操作的原子性?没答上来
计网
HTTP的状态码了解吗?
HTTP跟HTTPS有什么区别
TCP、IP分别在哪一层;三次握手和四次挥手能不能少一次?如果不行的话会出现什么问题?
TCP的滑动窗口工作过程。有点忘了
TLS的握手过程,使用了哪些加密算法?只知道一个RSA。能用对称加密算法吗?为什么不行
输入网址到出现网页的过程
八股告一段落,问我最近在看什么书。
手撕:找到数组中右边第一个比他大的数的下标。单调栈。
反问:面试表现怎么样?主要业务?
面试感受:面完感觉很好,答不上来时面试官会给一些提示,如果实在不会才换问题。面完发消息给HR,回复说已通过。许愿二面过
10.14 更新 二面已通过
面试时长:一个小时
流程:
自我介绍
接触过Kotlin吗?鸿蒙呢? 全都不了解 后面就问八股了
1.面向对象的三个特征。继承和组合有啥区别,什么时候用继承,什么时候用组合?
2.用过哪些数据结构?HashSet的底层实现?HashMap的底层实现?为什么要用红黑树?你觉得还有优化空间吗?
3.排序算法。快排是最快的吗?什么时候它最快。
4.线程与进程的区别。线程之间如何相互调用。对共享资源进行访问如何保证并发安全。死锁的原理。
5.介绍下GC。进程在GC的时候线程处于什么状态?回答了会被kill,问为什么这么设计?回答可能会导致内存泄漏,也不知道对不对。
6.介绍设计模式。代理模式的使用场景,解决了什么问题。
7.TCP跟UDP的区别。HTTP基于哪个。回答3.0基于UDP,问为什么要采用QUIC协议。
8.HTTPS跟HTTP的区别,怎么保证安全性的。证书泄露了会导致安全问题吗?
9.开放性问题,假设我是一个客户端的一个程序,然后我要加载出一个图片,这个图片加载怎么能让它的效率最高?
10.手撕 有序数组合并 很简单。
面试感受:面试官会根据你的回答进行追问,且比较喜欢问场景题,有些答得不好。没想到面完之后马上通过了,这周五三面,攒攒好运
#软件开发笔面经#