字节跳动一面面试题:
- 自我介绍
- 聊聊项目,时间大概15种左右,面试官会根据项目的一些设计点来提问,提前做好准备,别自己坑了自己
- 分布式锁是锁住一部分还是整个系统,既然是锁住整个,为什么不用消息队列?
- 详细讲下怎么用 mq 实现的最终一致性,还有怎么利用的消息事务?
- tcp 于 http 的关系,如何基于 tcp 实现 http
- Java 打开一个 http 流不关闭的后果
- io 流是基于抽象类还是接口实现的
- 数据库的乐观锁和悲观锁是什么
- 乐观锁实现原理,讲到一半,来写一个乐观锁吧
- java 的类中有什么方法
- 线程安全是什么?
- volatile 和 synchorized 的区别
- 假如有一个类 A 和一个 类 B,这两个类都有一个变量和一个自增操作,A 类的变量用 volatile 修饰,B 类没有用,B 类的自增操作用 synchorized 修饰,他们都是线程安全的吗,如果都是,那为什么要用 synchorized ,volatile 不是更轻量吗,synchorized 有什么作用。
- 智力题:岛上有群人,各自戴着红帽子或者白帽子,但都不知道自己帽子颜色,只有知道自己帽子颜色,第二天才能出岛,这时候有个人进来说了句“你们之中至少有一个人戴了顶红帽子”,问岛上的人最后的离开情况
- 算法:矩阵中的最长上升序列
字节跳动二面面试题:
- 自我介绍
- 项目介绍
- java集合框架全部介绍,从list set queue到map
- hashmap底层扩容线程安全问题
- 如果一个对象 要作为hashmap的key需要做什么?
- Threadlocal类以及内存泄漏
- 线程同步方式,具体每一个怎么做的
- jvm类加载双亲委派模式,有没有能破坏这个模式的方法?类加载整个过程解释
- 垃圾回收算法,垃圾回收器有什么?
- synchronized用在静态和非静态方法的区别
- 你做项目的思路是什么,看过什么源码,什么开源网站经常访间,看是什么学的的书不?
字节跳动三面面试题:
- 问项目相关的技术栈
- 怼问:为什么要用MongoDB?为什么不用MySQL?MongoDB有哪些特性,能说一下吗?
- 文档型数据库有哪些?ES与MongoDB有什么区别?为什么ES搜索更快?
- 数据库都有哪些类型,关系型数据库和NoSQL有什么区别?
- NoSQL有哪些?他们的使用场景都说一下
- 问JVM,类加载到卸载的过程都说一下
- UML都有哪些图?如何从这些UML的图中来实现你的需求设计?
- 设计模式说一下,Spring源码看过吧?那说一下设计模式是如何在Spring中体现的?
- Spring为什么要用简单工厂模式?
- 微服务了解过吧(了解过一点),微服务都有什么好处?
- 微服务都有哪些框架或中间件?
- SpringCloud都有哪些组件啊?和阿里开源的这些有什么不同呢?如果要你用你该如何选择?
- SOA了解过吧?那什么是SOA?SOA与微服务相比有什么优缺点?
- 如果让你提高一个系统,你该怎么做?如果让你设计一个系统,你要考虑哪些方面?
- 对什么技术比较熟悉(回答的Java多线程),JDK提供了什么来实现线程安全啊?
- 超线程是什么?知道吗?
- 对未来的技术有什么规划?你为什么要学这些技术?