面试日记
岗位:字节java实习 时间 2019/8/21
Q:Java特性有哪些
A:面向对象?GC?虚拟机?
Q:多态是什么
A:可能期待的回答:优点,用来解决什么问题,实现方式
Q:Java重载和重写
A:可能期待的回答:特点与区别
Q:数组和链表
A:可能期待的回答:特点区别,使用场景,还有哪些数据结构是以这两个为基础的
Q:队列和栈
A:同上
Q:数据库索引
A:什么时机建,怎么建,索引原理,B+树
Q:Redis实现原理
A:内存?IO多路复用?单线程?
Q:快速排序,基数排序,归并排序
岗位:牛客-美团2019模拟 时间 2019/9/1
这套题很有意思,大多是思维题,代码都不长,不过难度不小
1:图的遍历
想象为以1为根的树,其中深度最深的一条路径只用走一次,其余所有路径都需要走两次,所以答案=(n-1)*2 - maxlen
2:最长全1串
滑动窗口思想,两个指针,右边指针往右移,遇到1直接移,遇到0,k--,k不够用的时候左指针往右移
3:外卖满减
dp
4:种花
思路很有意思,有点像刷栅栏的题,详细看这篇博客https://blog.csdn.net/weixin_42564710/article/details/97646339
5:考试策略
dp
6:路由器
差分数组
7:D塔2
模拟
岗位:美团后台开发一面 时间 2019/9/6 (2小时)
1:集合,从接口的角度讲讲
2:集合中的线程安全类有哪些,都是如何实现的
3:都有哪些线程池,分别有哪些作用,线程池有哪些参数
4:如果让你实现一个Tomcat,都需要实现哪几方面,深入聊一个方向
5:mysql讲一个你了解的方面
6:mysql优化流程
7:mysql连表查询和分开两次查询在合并,有什么不同
从连接池,mysql优化方面答
8:状态码
9:linux命令
10:项目,给一个场景让理技术和业务上的逻辑
岗位 小米 java开发 一面 2019.9.19 (40分钟)
Q: 接口和抽象类的区别
A:
接口可以多继承,抽象类不能实现多继承。
接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对里面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。
Q: 数据库两种引擎区别
Q: 缓存击穿 布隆过滤器
Q: jsonp 跨域
Q: session和cookies ,禁用cookies怎么办 sessionID
Q: 线程 进程 协程
协程是一种用户态的轻量级线程,java目前原生还不支持
Q: 死锁
手写代码巨简单,面试官超好,自认为状态特别不好,还是给过了
岗位 去哪儿Java实习 2019.10.11(30分钟)
Q:常用排序算法
Q:分析快排 冒泡 归并 堆排的时间复杂度
Q:线程状态
Q:介绍下守护线程,以及和其他线程比较
Q:Redis如何实现单线程的
redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。
Q:Redis如何控制超买超卖
Q:Redis中常用数据结构
Q:SET集合底层是如何实现的,ZSET如何实现
Q:七层网络协议,常用协议在哪一层
Q:HTTP使用传输层中的哪一种协议
手写代码
两个链表判交叉
写了常规的两种方法
想到了判环,没写出来..