面试公司:字节跳动
面试岗位:Java开发
一面
注:面试官特别友善,面试体验特别好
·自我介绍
·实习时间挺长?
·数组和链表的区别?
·ArrayList的扩容是怎么实现?
·介绍一下hashmap,介绍一下put操作做了哪些步骤?(问了细节)
·hashmap判定重复是==还是equals
·hashmap1.7和1.8?
·hashMap是线程安全吗?介绍一下concurrentHashMap?如何保证线
·程安全的同时保证吞吐量?
·synchronized在jdk1.8做了哪些优化?
·synchronized为什么要设计成可重入?
·volatile的原理?解决什么问题?
·介绍一下JMM
·Lock接口?了解过AQS嘛?
·ReentrantLock可以做公平锁吗?怎么实现公平锁?
·算法题:用栈实现队列(Leetcode)其中栈的数据结构也自己实现
·String s1 = “abc” String s2 = new String(“abc”)两个语句分别创建
了几个对象?对象存储的位置?s1和s2相等吗?执行顺序先是第一条
再是第二条创建几个对象?
·interface和abstract的区别
·abstract抽象类里面一定要有抽象方法吗?
·interface可以写方法的实现吗?
·jvm的类加载机制?
·双亲委派机制?
·TCP属于网络的哪一层?
·TCP是面向连接的?为什么三次握手?
·TCP怎么保证可靠传输?
·滑动窗口的大小由哪一端来控制?server为什么要控制?client为什么要控制?
·拥塞控制知道吗?
·mysql联合索引一道题目:建立了联合a,b,c。
a,b,c会走索引吗?a,c会走索引吗?
·算法题:无重复字符的最长子串(leetcode)
·你有什么问题要问我吗?问了一下业务?问了一下什么语言?
二面
·自我介绍
·介绍一下springMVC和Springboot和Mybatis
·springMVC的一些细节
·springboot的作用
·介绍几种排序算法,时间复杂度,空间复杂度
·桶排序
·快速排序
·算法题:实现快速排序
·堆排序怎么实现
·数据结构中图的表示有哪些
·哪种情况下用矩阵、哪种情况下用邻接表
·求两个点之间的最短距离?介绍一下迪杰斯特拉算法?
·介绍一下事务?
·介绍一下三大范式?
·进程和线程的区别
·进程调度有哪几种方式?有哪几种评价方式?
·介绍一下虚拟内存?为什么使用虚拟内存?(两种优点)
·算法题:对无序的链表进行排序(不可以使用Java中的容器)
三面
·自我介绍
·学校里学的哪些课程比较受用?
·一个指令从软件到操作系统到硬件执行?整个过程做了哪些?
·启动一个应用,监听一个端口对外服务?启动服务以后,本身没有
问题,但是客户端连不到服务?如何诊断?
·一个url从输入到页面解析的过程?
·DNS用什么传输协议?
·用户如何找到DNS服务器?
·DNS服务器是怎么知道IP地址的?如何知道去哪里找DNS服务器?
·JDK和JRE的区别?
·类加载的机制?
·一道问题,有关于Java的值传递
·手撕sql
employee(id, name, salary)
office(id, city)
写一个sql,输出每个城市收入最高的员工的名字?后面改成每个城市收入最高的收入?
·算法题:下一个排列(Leetcode)
·数学题:参加一个游戏节目,你是参赛者,主持人会在你的前面放三个盒子,其中一个盒子藏奖品,你选中一个盒子之后,主持人会开启另外两个中没奖品的一个盒子,剩下一个盒子。请问现在有机会让你换成另外一个盒子,你换盒子和不换盒子的中奖概率是怎么样的?
·你有什么问题要问我吗?



