字节跳动 客户端 一二三 + hr面
一面:
1、自我介绍
2、tcp和udp区别,应用场景
3、tcp三次握手,为什么有第三次
4、get和post区别,其他命令
5、进程和线程区别,什么时候用多线程,怎么保证线程安全
6、synchronized的使用,是对什么加锁
7、栈和队列,怎么用栈实现队列
8、垃圾回收算法,复制算法中存活对象太多怎么办
9、可达性分析,GC Root可以是哪些对象
10、hashmap底层实现,put get过程,扩容,为什么容量为2的倍数
11、java基本类型,基本类型间的转换(short+int得到int类型,不能直接把int型赋给short型)
12、String类,字符串相加+的底层操作,StringBuilder和StringBuffer
13、算法:给一个数组,使数组奇数在前半段,偶数在后半段,在原数组上操作。
二面:
1、手写线程安全的单例模式,为什么两次判断空,为什么用volatile
2、算法:二叉树反向层次遍历
3、https,ssl握手过程
4、http1.0、1.1(断点续传的一些标志)、2.0区别,http状态码
5、sleep和wait的区别,用什么对象调用wait
6、类加载机制,双亲委派,解决了什么问题(避免重复加载,安全)
7、设计模式,动态代理
三面:
1、算法:给一个list删除里面指定的值为target的元素;查找有序数组中出现target的第一个位置,如果没有返回-1(二分查找)
2、项目,非常仔细,虽然我做的项目跟岗位没有一点关系。。
3、多态,为什么可以实现多态
1、自我介绍
2、tcp和udp区别,应用场景
3、tcp三次握手,为什么有第三次
4、get和post区别,其他命令
5、进程和线程区别,什么时候用多线程,怎么保证线程安全
6、synchronized的使用,是对什么加锁
7、栈和队列,怎么用栈实现队列
8、垃圾回收算法,复制算法中存活对象太多怎么办
9、可达性分析,GC Root可以是哪些对象
10、hashmap底层实现,put get过程,扩容,为什么容量为2的倍数
11、java基本类型,基本类型间的转换(short+int得到int类型,不能直接把int型赋给short型)
12、String类,字符串相加+的底层操作,StringBuilder和StringBuffer
13、算法:给一个数组,使数组奇数在前半段,偶数在后半段,在原数组上操作。
二面:
1、手写线程安全的单例模式,为什么两次判断空,为什么用volatile
2、算法:二叉树反向层次遍历
3、https,ssl握手过程
4、http1.0、1.1(断点续传的一些标志)、2.0区别,http状态码
5、sleep和wait的区别,用什么对象调用wait
6、类加载机制,双亲委派,解决了什么问题(避免重复加载,安全)
7、设计模式,动态代理
三面:
1、算法:给一个list删除里面指定的值为target的元素;查找有序数组中出现target的第一个位置,如果没有返回-1(二分查找)
2、项目,非常仔细,虽然我做的项目跟岗位没有一点关系。。
3、多态,为什么可以实现多态
4、重载和重写
hr面:
非常轻松,聊天一样,确定一下学校和专业,问问什么时候能去实习,问我有什么问题。
四天后收到offer邮件
#字节跳动##实习##Java工程师##面经#