-
说一下 java 类加载器的工作机制?类加载在哪个区域进行的?
-
说一下 java 的线程模型?
-
violate 了解吗?它的原理是什么?violate 是线程安全的吗?
-
保证线程安全的解决方法有哪些?说一说读写锁吧,读写锁的读
-
数据库的索引有哪几种?为什么要用 B+树来做索引?组合索引和几个单个的索引有什么区别?数据库的大表查询优化了解吗?MVCC 机制了解不?MVCC 机制有什么问题?怎么去解决这个问题?mysql 慢语句调优做过吗?说说你是怎么做的?
-
redis 了解吗?你说说怎么用 redis 实现分布式锁?
-
spring 中 Bean 的作用域,springMVC 的 controller 是线程安全的吗?怎么去保证线程安全呢?
-
消息队列有用过吗?说说你怎么用的?
-
计算机网络了解吗?说一说 TCP 三次握手和四次挥手吧
-
time_wait 状态产生的原因是什么?,有什么危害?可以如何避免?
-
寻找旋转排序数组中的最小值
阿里二面:
1、手撕算法
-
10 个多线程保证 i 从 0 加到 10 (差点翻车,主线程忙等另外 10 个线程完结)
-
反转链表
-
上台阶(n=80)
2、操作系统
-
常用的 linux 命令说一下
-
操作系统中的信号 和 信号量有什么关系
-
epoll 和 Selector 有什么区别?
3、计算机网络
- 说一下拥塞控制
4、数据结构
-
说一下红黑树,你平时用的技术哪里用到了它?
-
哈希表怎么处理冲突?
5、项目相关
-
把项目放到服务器上运行的时候有没有遇到什么问题?查看项目运行的状态怎么做?
-
spring 和 springboot 的关系你是怎么理解的?
-
Spring IOC 和 AOP 说一下你的理解
-
为什么用消息队列?
-
对于消息的重复消费你有什么设计方案吗?
阿里三面:
-
你怎么学的 Java 啊?
-
设计模式了解吗?单例讲一下,懒汉饿汉 double-check,怎么实现。策略模式,外观模式,适配器模式,装饰器模式,分别讲一下
-
联合索引什么时候不会触发索引?
-
AOP 了解么,有什么好处,如何使用,怎么实现的?
-
支付宝到银行的转账业务怎么实现?
-
redis 实现分布式锁
-
三台机器集群,按不同权重访问,怎么做?
阿里四面(hr):
-
先介绍一下你自己吧
-
平时怎么去学习的?
-
为什么你说学习了要去实践?
-
说一下的最大的优点和缺点
-
举一下你缺点的例子
-
想象一下你几十年后是怎样的生活?
-
你觉得最痛苦的一段时间
-
对你影响最大的一件事情
-
在安排活动的过程中有没有发生什么冲突?
-
你有什么崇拜的人吗?
-
你有什么想问的?
字节面经:
=====
字节跳动一面:
-
实习项目就聊了差不多 30 分钟
-
问了 MySQL 的索引
-
redis 的 string 类型
-
为什么使用 RabbitMQ?
-
RabbitMQ 有哪些部件?如何保证准确性跟一致性?
-
hashcode 和 equals?
-
动态代理
-
快排
-
无序数组计算每个位置大于前面的多少个数字(归并排序)
字节跳动二面:
-
谈谈项目?
-
mongodb 底层原理或者数据结构是什么,务处理,插入和 mysq 有什么区别,为什么会慢
-
如载过程(Java) ,每一步做了什么
-
子类和父类的实例变量和方法有什么区别
-
重载和覆盖区别,返回值类型不同,可以重载吗,为什么,底层如何实现的
-
java 多线程,状态图,画出来,阻塞的状态有哪几种,运行顺序,多线程的一些方法
-
java 泛型
-
ThreadLocal, Concurrent 下面的包,原理是什么,
-
AtomicInteger,原理是什么,如何做到高效率的,有什么优化措施
-
悲观锁和乐观锁
-
@Transaction 的原理,还有比如在一个类中两个方法, -个是 B 方法,-个是 C 方法, B. 上没有注解,C 上
-
有那么在外面调用 B**有事务,为什么,根据底层原理能不能推断出来(给提示问你能不能推断出来)
-
查询学生成绩不及格的所有人的姓名和编号,根据这个语句,如何建立索引,为什么,
-
mysq 底层是什么,为什么效率高,主键能不能太大,为什么,如果太大,底层数据结构会不会变化,为什么
-
linux 查询 tcp 连接处理 CLOSE_ WAIT 的状态的数目
-
了不了解 RabbitMQ, kafka, RocketMQ, ActiveMQ, 以及其他消息中间件
-
redis 为什么效率高,线程,数据结构,网络模型,aio, nio, bio, 为什么这么设计?如何处理高并发
字节跳动三面:
-
数据仓库,雪花模型和星型模型区别和用处,数据仓库的过程(分层) ,如何设计
-
数据仓库和数据湖的区别
-
分布系统的设计,分布式系统 CAP,分布式系统的模型
-
linux 环境下的线上业务管理有没有,如何管理
-
redis 的集合有没有限制,限制是多少
-
redis 的 1w 条的插入和更新有什么区别
-
mysql join 的底层原理是什么,有哪几种(不是左右连接这种)
-
linux 命令查询一个文件内出现重复最多的数字的
-
linux 命令查询一个文件的行数
字节跳动 HR:
-
自我介绍,对公司面试的评价,实习时间
-
为什么转专业?
-
你认为你有什么优点?有什么缺点?有什么兴趣爱好?
-
在团队中习惯充当什么样的角色?
-
遇到过比较困难的事情是什么?觉得自己很幸运的事情是什么?
-
对于未来的规划?有没有使用过公司的其他产品?有没有转正想法?
-
你还有什么想问的?
更多面经分享
======
以下面经就不具体详说,大致方向都差不多。
京东物流
====
-
java 特点描述一下,继承封装多态分别是什么意思
-
synchronized 和 lock 区别
-
ConcurrentHashMap 线程安全怎么实现的
-
创建线程的几种方式,创建线程池几个参数的含义,线程饱和策略
-
sleep 和 wait 区别
-
spring 是单例还是多例,多线程并发会出现什么问题
-
SpringBoot 如何解决跨域,具体怎么配置
-
全局异常捕获怎么做的
-
SpringSecurity 的前后端分离,登录怎么做的 我:拦截登录的 url,然后获取到用户名和密码,把这个用户名和密码交给 manager,manager 会交给具体的 provider 处理,provider 会调用 UserDetailsService 的方法完成验证。 这里是我失误了,他说用户名和密码时通过 getattribute 获取到的吗,我说是的。
-
怎么设计一个安全的对外接口
-
单线程的 redis 为什么这么快
-
redis 持久化方式
-
什么是聚簇索引,什么是非聚簇索引
-
mysql 事务隔离级别
-
你觉得你能承担独立开发的任务吗
开通金融
====
做互联网金融的,公司总部在北京,我面试的时候是在成都的新网银行公司,看这个模式应该就是驻场开发了,但是公司本身不是外包。
-
springboot 和 spring 的不同
-
springboot 特性,自动装配怎么实现的
-
spring 用到哪些组件,具体场景
-
spring 默认是单例还是多例,全局变量会有什么问题
-
spring 事务传播行为、隔离级别
-
aop 实现方式,jdk 动态代理和 cglib 动态代理区别
-
jdk lambda 表达式几种使用方式,取最大和最小值,list 转 map,list 中有重复的怎么办
-
线程池 有哪些参数,各个参数的意义
-
ioc 容器有什么优点
-
jvm 堆栈,区别,线程共享还是线程私有的
-
springcloud 组件、用途,负载均衡的几种算法
-
分布式事务怎么做的
-
mybatis 一对多,多对多怎么做
-
jpa 和 mybatis 区别
-
vmstat 命令干嘛的
-
redis 查看内存占用命令
-
mysql 导入大量数据怎么优化
-
mysql 有一条数据死锁了,怎么排查问题,mysql 表死锁,怎么排查
-
nginx 反向代理是什么,正向代理呢
这次面试回答得挺好的,hr 也打了好几次电话说面试官对我挺有意向的,就是一顿操作猛如虎,一问工资 0.9。而且我当时还是在职,要求我一周到岗,我就没去。
拿下 offer 前,我做了些什么?(我的成长笔记)
1.准备简历
之前已经说了,简历是门面,更是敲门砖,能否拿到大厂的面试机会,就要看自己的简历如何,抛开学历以外,大厂最看重简历是否有亮点,因此我们对简历内容要有准备,对自己的突出点,包括技术、个性上的亮点,要练习表达,避免临时组织语言。
2.提升技能
实际上我有个阿里的朋友很早之前就向我透露过,很多人认为大厂看重学历,但实际情况并不完全是,在阿里只以能力论英雄。所以,在日常生活中,通过不断地学习,提升自己的能力,努力去拉近自己与目标值的距离,这是很有必要的,也是未来的必然趋势。
关于提升自己的技术栈广度与深度,我的做法是:
01.阅读实战文档
02.读一些源码
03.读一些技术笔记
什么?(我的成长笔记)
1.准备简历
之前已经说了,简历是门面,更是敲门砖,能否拿到大厂的面试机会,就要看自己的简历如何,抛开学历以外,大厂最看重简历是否有亮点,因此我们对简历内容要有准备,对自己的突出点,包括技术、个性上的亮点,要练习表达,避免临时组织语言。
2.提升技能
实际上我有个阿里的朋友很早之前就向我透露过,很多人认为大厂看重学历,但实际情况并不完全是,在阿里只以能力论英雄。所以,在日常生活中,通过不断地学习,提升自己的能力,努力去拉近自己与目标值的距离,这是很有必要的,也是未来的必然趋势。
关于提升自己的技术栈广度与深度,我的做法是:
01.阅读实战文档
[外链图片转存中…(img-IAUSUuY2-1670776059846)]
02.读一些源码
03.读一些技术笔记