一面:
自我介绍
项目问题
volatile语意
保证内存可见性,禁止指令重排
线程同步方法
Lock,Synchronized
数据库索引结构,为什么快
减少IO次数
synchronize关键字
同步代码块和同步方法
jvm内存模型,有哪几块,程序计数器是干嘛的
记录程序运行状态
二面:
有什么设计模式
单例模式,工厂模式
装饰者模式讲讲
Hashmap内存结构,扩容问题
数组加链表
创建线程的几种方式
四种方式
Runnable和callable区别
前者没有返回值,后者有返回值,有异常
线程池参数, 队列,核心线程池和最大线程池关系
sql注入,
哈希一致性
分布式缓存
一面
1.讲讲Java反射机制,平时编码有没有用过反射
2.spring怎么用反射,IOC原理,讲注入方式,扯到jdbc获取数据库驱动反射相关知识
3.从反射扯到了类加载过程,类加载时机
4.说说设计模式,说下装饰器模式,在什么场景下见到过,或者用过装饰器模式,用java的inputstream,fileinputstream,bufferedInputstream简单模拟一下
5.说说mysql,怎么设计表,设计表一定要遵循三范式吗,有没有哪种情况下遵循了三范式反而不好的情况
6.说说mysql引擎,哪种情况下用什么引擎
7.说说事务的隔离级别,给了一个什么日志的场景,问用什么存储引擎和什么隔离级别,卒
8.jdk源码看了没,看了什么源码,答string,string的底层实现是什么,说说equals方法,跟hashcode有什么区别,怎么获取有一个字符串“a”,怎么获取它的地址,说了System.identityHashcode他说不是,没听懂,后来又说什么操作系统啥的,没听懂,就过了
9.说说string.itern方法
10.写代码,他觉得我太菜了,找了一个最简单的判断回文数,以为要凉了,但还是给了二面
11.又想起来一点,问数据库索引的,有哪些索引,问索引的数据结构,为什么用b+数,索引什么情况下会失效,哪些字段适合建索引
12.数据库的外键用没用过
二面
1.项目,扯了些有的没的,问mysql的引擎,比较,使用
2.问如何沟通需求,怎么把需求和编码相互转化
3.问设计表的时候有哪些要考虑的因素
4.有一篇英文文章,很长,问怎么设计来统计文章里面的单词,以及单词出现的次数,并且找出出现次数最多的10个单词
三面
1.自我介绍
2.家庭情况
3.问成绩,平时爱好,为什么不保研,考研呢
4.问有没有offer
5.平时看啥书,你觉得你前两面答得怎么样
6.还有啥想问的
结束了,喜欢招银,希望给个offer吧,面了1个半小时好累
节跳动效率工程 后台开发实习生 视频面试 面试时间:2019-11-20 17:00:00 时长:1小时13分钟
1.自我介绍 。。。。。。。。
2.像今日头条以及抖音这类APP有什么局限性?
因为纯算法推荐可能会陷入自我的圈子。。。。。。
3.你有没有什么解决办法?
引入社交。。。。。。。。
4.问简历上面的毕设?
刨根问底的那种 。。。。。。。。
5.描述面向对象编程,每种动物发出来的声音是不同的,假设现在有猫和狗两种动物,
设计一个程序,让猫发出“喵”,让狗发出“汪”,没有让写具体代码。
6.TCP 三次握手,四次挥手
(1) 先用自己的语言描述一下“三次握手,四次挥手”
(2) 现在把问题深入下,三次握手,第一次发送的是什么消息?
(3) seq 为啥是x,是随机的吗?还是从0, 1 开始的?
(4) 为什么是三次握手,四次挥手呢?三次挥手行不行?
(5) 挥手时,不通知应用层把程序关掉会怎么样?
7.手撕代码
求不在数组中的最小正整数
{-1, 1, 0, 100, 2, 3, 4}-->5 {5, 4, 3, 2}-->1
(1)描述思路
(2)该方法的时间复杂度
(3)现在以空间复杂度换取时间复杂度优化一下你的代码?
(4)写一下代码
(5)时间复杂度最优的情况是多少?(我的复杂度有点高)