【Java实习面经】【字节跳动】【阿里】【腾讯】【百度】
我是2020届毕业生,去年太忙了没来得及整理,今天把所有实习面经一并分享。
岗位:Java开发
公司:字节跳动、阿里、腾讯、百度
offer:字节跳动、阿里、百度
按我面试的时间顺序:
【字节跳动】
一面:
- 聊项目
- innoDB索引
- 堆,怎么插入一个数据
- 线程和进程的区别
- (编程题)对链表两个节点一反转:1->2->3->4变成2->1->4->3(编程题)
- (编程题)给定一个数组判断是不是二叉搜索树的后序遍历的结果(编程题)
二面:
- (编程题)3-sum,时间复杂度是多少
- (编程题)n-sum
- hashtable和hashmap的区别
- 讲一下concurrentHashMap
- JVM垃圾回收算法
- 怎么判断一个对象需要回收
- 引用计数法和可达性分析有什么区别
- 默认的垃圾回收算法是什么?
- 讲一下G1垃圾收集器
- 了解什么开源工具吗
- SpringMVC讲一下
- 哪一个版本的虚拟机默认用的是G1收集器?
- 事务的隔离级别
三面:
- 举一个现实生活中用到ioc思想的例子
- 举一个现实生活中用到aop思想的例子
- 其他问题就是各种你对什么什么的看法,你对头条系产品的看法,你对推荐和搜索的看法等等等等…
【阿里】
一面:
- Java内存模型
- 怎么实现可见性
- synchronized怎么保证可见性,在占有锁这个线程占有锁之前,有其他线程复制了变量到工作内存中,那么占有锁的线程改完的结果其他线程能立即可见吗
- final修饰什么的时候能够保证可见性
- Java有哪些机制能够保证线程安全
- synchronized有什么缺陷
- synchronized的低效率缺陷有什么方式可以改进(乐观锁机制)
- 乐观锁是怎么实现的
- 听说过CAS机制吗
- 有什么具体用CAS的工具吗
- 对AOP和IOC的理解
- 事务acid
- TCP和UDP的区别
- TCP怎么保证可靠传输
- TCP的第三次握手的主要作用是什么
- 讲一下项目
- (编程题)实现一个Java栈结构
二面:
- 问项目
- 求数组中子数组的和的最大值
- 求二维数组中子矩阵和的最大值
- 求二维数组中子矩阵的积的最大值
【腾讯】
一面:
- 讲项目
- String的==和equal
- String s反转,要求空间复杂度O(1)
- 可以返回最小值的栈空间怎么实现
- 讲一下你熟悉的list
- ArrayList和LinkedList的区别
- 讲一下hashmap
- hashmap是线程安全的吗?有线程安全的hashmap吗?然后就讲了hashtable和concurrenthashmap
- 垃圾回收
- Full GC什么时候发生
- 怎么避免full GC
- 复制算法为啥要搞两个区
- 年轻代存活的对象为啥不直接放老年代
- 什么时候会内存溢出
- 你遇到过内存溢吗
- 讲一下Spring ioc
- 写一个sql,查询每个科目前三名的成绩,没写出来
- (编程题)题目太长不好描述,原题在Leetcode的430题. Flatten a Multilevel Doubly Linked List
二面:
- Java内存模型
- 堆和栈的区别
- 垃圾回收算法
- 怎么判断对象是否需要被回收
- 为什么要用ioc和aop
- (设计题)一个系统在注册账号的时候需要完成若干操作,比如创建账号、验证身份信息、发送欢迎邮件等等,又希望这些操作尽量快的完成,你怎么设计?
【百度】
百度的一二三面是一下午连着面的,面试时间太长分不清哪个问题是哪一面问的了,有些问题也忘了,以下是记下来的
一面+二面+三面: - 聊项目
- 公钥加密是什么样的
- 数据库的索引数据结构
- 数据库的隔离级别,默认隔离级别是哪个
- 怎么发现线程死锁,怎么避免线程死锁
- 多线程用的多吗,怎么保证并发
- ThreadLocal的用法,什么时候用
- StringBuilder和StringBuffer的区别
- TCP和UDP的区别
- TCP怎么保证可靠传输的
- HTTP报文格式什么样
- HTTP请求头中表示请求数据格式的是哪个
- HTTP返回码有哪些
- HTTP返回码206什么意思
- IO模型
- 进程间的通信
- 试过JVM调优吗?常用的参数有哪些?
- JVM区域划分,每个区域中都放什么样的变量
- Java内存模型
- 类加载机制
- 垃圾回收算法
- Spring boot用过吗
- Spring AOP,IOC,MVC
- ConcurrentHashMap,及1.7和1.8区别
- 把我当成不会JVM的人,给我讲一下JVM
- shell操作文件
- 分布式
- 高并发了解吗
- MQ消息队列了解吗
- 最近在学什么新技术,有哪些心得体会
- 你能为团队带来什么,你的优势是什么
- (编程题)数组中找出最小的k个数,空间复杂度O(1)
- (编程题)二维数组,每一行从左到右递增,从上到下递增,判断给定的数是否存在
- (编程题) 1,0,0,1,1,0,1变成0,0,0,1,1,1,并保证稳定
- (编程题) 给定一个数组,求子数组的最大和
- (智力题)1-1000个数,每次删除奇数位置的数(位置从1开始计数),最后剩下哪个数