牛客投的
0.自我介绍
1.常用数据结构,区别及使用场景 --答了数组链表栈队列树,简述了一下各个结构的特性
2.数组和链表在内存中数据的分布情况 --逻辑地址上数组连续,栈不连续
3.HashMap源码看过吗 --看过一点点
4.底层数据结构和put操作
5.JVM内存区域
6.各个区域存放什么东西
7.创建一个对象,内存怎么分配的
8.堆中内存怎么划分,gc怎么回收
10.Ioc 原理
11.Bean存放在哪里 --spring将它存放在,啊 在堆里面。胡诌一番(真记不清,后来反应过来应该是问的BeanFactory)
12.AOP原理
13.动态代理实现方式
14.BeanFactory和FactoryBean的区别
15.事务的隔离级别
16.脏读场景,幻读场景
17.分布式锁用过吗 -- 用过redis作分布式锁 (分布式还没系统学,开启乱答吧)
18.redis为什么可以作为分布式锁 -- 乱答一通(面试官直接告诉我是 redis单线程运行的原因)
19.哪些场景用过redis -- 缓存
20.redis 数据结构
21.redis过期策略
22.怎么理解序列化
23.知道哪些序列化协议 -- 只知道json (问我rpc中的序列化协议,不知道)
24.怎么分析慢sql -- 不会
25.写sql 学生姓名科目成绩表,求平均分90分以上的
26.linux用过吗 --会一点
27.vim 怎么保存退出 -- :wq
28.查看文件 -- cat
什么情况使用MySQL,什么情况使用Redis
Redis有什么持久化策略
MySQL有哪2种引擎,说一下它们的区别
MySQL两个线程的update语句同时处理一条数据,会不会有阻塞
滥用事务,或者一个事务里有特别多sql的弊端
两条update语句处理一张表的不同的主键范围的记录,一个<10,一个>15,会不会遇到阻塞?底层是为什么的?
如果2个范围不是主键或索引?还会阻塞吗?
除了表锁,行锁这些,还有别的形式的锁吗?分类
从设计数据库,编写sql,加锁等方面来对数据库方面的工作做一个总结
谈一下对线程和进程的理解
多线程比单线程的优势,劣势
Java创建线程有几种方式
线程池有哪些优势
说一下对面对对象3大特性理解
Java有什么常用的集合类?
有哪些集合类是线程安全的,哪些是不安全的?
数组和链表有什么区别?
堆和栈的区别?
Set集合有什么特点?如何实现key无重复的?
有序的Set是什么?记录插入顺序的集合是什么?
Linux操作系统中哪个命令可以查看端口被哪个应用占用
记得去年约了京东物流的面试,后悔没做什么准备,没背朋友给我的新整合的Java八股文就硬上了,全过程大概一个多钟,覆盖面很广,结果直接凉了。
微服务调用openfeign底层怎么调用的原理
分布式事务,缓存和数据库的一致性保持。mybatis的缓存,rabbitMQkafakrocketMQ区别
慢查询索引失效,b+树分库分表高并发除了加锁还有什么解决方案,kafak持久化内存满了除了迁移还能怎么办?这些那时
一面
二面
1. 我项目中有一个点赞的功能,问题:并发情况下,如何保证更新的值不会出错
当时太紧张了,其实可以使用mysql的锁来实现
2. 问:基本数据类型,占的字节
3. 问:String,为何要使用final修饰,作用,存储方式,为何要在jdk9换成byte数组
4. 问:看过集合源码没有
答:看过
问:ConcurrentHashMap的优点,与其他集合的不同
5. 问:知道哪些线程安全list
答:CopyOnWriteArrayList,Collections
问:并发情况下,修改list会怎么样(ConcurrentModifitionException),为何要抛出异常
答:答对一半,为了数据一致性,当时脑袋一团乱
6. 问:创建线程池的方式,使用newSingleThreadExecutor创建线程的作用(没答对)
7. 问:创建的数据结构有哪些,图如何判断是否出现环
8. 问:LinkedList的时间复杂度,如何将一条单链表的查询时间复杂度变成O(logn)
9. 问:MySQL中的日志有哪些
10. 问:spring中的ioc,举一个例子
本来不打算去的,想到是第一次线下面,就去了
hr简单介绍一下做什么,说了下薪资(比较低),说了下上下班时间(早九晚六点五),然后就叫了个技术。
技术来了看了看简历,问会不会elementUI,我说了解一些,主要是java,他就问我知道数据库吗?
我说知道,就问我什么时候用join,我举了个例子,还有一个redis的数据类型,就问我有什么要反问的吗?
我一脸懵,这就结束了,我问他是不是要找全栈的,说前后端都要会一些。然后就转领导面。
领导来了先让自我介绍,然后问了大数据懂不懂,我说不懂,他说可以以后边操作边学,然后又问了一些概念,比如中台(不了解),就说实习要踏踏实实,不要吊儿郎当的,迟到早退,或者不来。。。。然后就又把hr叫来了。
hr来就说面试通过了,等什么时候能去联系他一下再发offer,然后就让我走了
嗯。。。怎么说呢?和我想的有点不太一样,本来只是打算长个面试经验,然后。。。。
因为我简历上写了实习期间用数据库比较多,于是面试官就问了我一堆数据库的问题(这里提醒下一定要对自己的简历足够熟悉)。
1.首先是很基础的问题:包括select、like、group by、join…等等这些关键词怎么用,还给了一些具体的场景,要求写出具体的sql语句。
2.左连接和右连接
3.查询语句优化
4.数据库索引:谈谈对索引的理解,为什么用索引,什么情况下使用索引,索引的底层数据结构是什么,为什么用b+树,为什么不用红黑树,b+树和b树的区别
5.数据库的隔离级别,分别解决了什么问题(脏读幻读之类的)
6.innodb和myisam的区别
7.数据库事务的四个特性,其中原子性是什么意思
然后是java的一些问题
1.你了解的有哪些集合?
2.Arraylist和LinkedList的区别
3.HashMap的底层结构,put方法的具体操作过程
4.了解CurrentHashmap吗
5.谈谈Hashcode,==和equals的区别
6.怎么创建多线程,三种创建方式的区别
7.线程池了解吗,说说线程池的具体工作过程
8.java中有哪些锁,简单说说它们之间的区别
9.jvm的内存模型
10.jvm的垃圾回收算法
11.双亲委派模型
后面还零星问了些,具体的就记不太清楚了
然后就是手撕代码,二叉树的层序遍历。
二叉树的题我不是很熟,但前中后序遍历和层序遍历我还是做过的。
但具体的题目和我之前做的又有些小小的出入,然后我又有点紧张,导致我在一些细节上卡了较长时间,最后在面试官的提醒下还是做出来了,不过也比较曲折了(因为有一些用例没通过,所以还调试了一段时间),估计这里给面试官扣了一些印象分。
还没休息多久马上就开始技术二面了,问的内容和前面都大差不差,也是问了我数据库和java,还问了下项目和实习经历,我的二面和一面比起来问得就没那么多,也可能是因为每次面试官想延伸问一些深层次的东西我答不上来。感觉一面侧重广度,二面侧重深度。
最后也是给了道算法题,不过这个很简单。
我一开始还往复杂了想,在想要不要用dp,后面发现根本没必要,直接一层循环就能做出来,不过也是要注意一些边界条件的问题。
也是问一些基本情况,还问了下项目相关的问题,以及能不能接受转C++,能不能接受加班等等。
然后就是等offer了,因为技术面表现不是很好,然后原先的部门需求又缩紧了,hr就给我换了个部门,最后也是有惊无险的顺利拿到了offer
菜鸟给我Offer吧
1.OSI七层网络模型以及各层的作用
2.TCP和UDP的区别
3.TCP保证可靠传输的机制
4.TCP三次握手机制
5.进程线程之间的区别
6.进程之间的通信方式有哪些
7.AQS的底层原理
8.线程的几个问题:原子性、可见性、有序性都是怎么实现的
9.volatile单例模式,聊到了指令重排
10.synchronized和lock的区别
11.解决ABA问题,引入原子引用
12.脑筋急转弯:五个人过河的经典问题,没答出来感觉GG
mysql有哪些存储引擎,默认用哪种?
mysql怎么实现分页查询的,具体怎么实现?
MyBatis配置文件需要配置哪些
lucene是什么,用来干啥的
Lucene底层怎么实现的
SM搭建过程,自己可以搭建吗
Redis是什么,用来干什么的?
寻找数组中第K大的数(快排思想)
一面面试官技术大佬,虽然有很多地方个人觉得答得不怎么样,但还是放了我一马。
二面面试官很直接,上来自我面试都没做直接开问。
1Java8新特性
2 stream返回大于60分学生 返回学生姓名字符串
3 多线程创建方式
4线程池流程 参数
5获取线程返回结果方法
6springmvc springboot区别
7spring常用注解
8 spring事务传播级别
算法 数组原地去重返回长度
一面:
项目背景(目的,实现功能,达到成果)
kafka如何保证一致性和可用性
业务代码修改mysql数据库后发送kafka消息然后事务回滚,但消息已经发了咋办
redis数据结构,跳表查找过程,跳表节点包含什么内容
事务隔离级别,脏读,mvcc
索引分类,其他分类方式
b+树好处和查找过程
手撕代码:单例模式,反转链表,二叉树的最近公共父节点
二面:
对蔚来的了解
做的功能是优化还是新增
如何设计数据库表,如何将三大范式应用设计数据表时
redis用途
kafka用途,如何保证消息不丢失
java中的锁,synchronized和reentrantlock原理以及如何选择
对象头长度(我不知道,就说了下对象头包含的内容),对齐填充,为什么需要对齐填充,为什么jvm是整数字节
项目里面有没有用多线程和设计模式
哪里人,想来上海发展吗
手撕代码:股票最大回撤率
1.kafka重复消费,为啥会用kafka,rabbitmq这类中间件
2.docker相关:如何进行镜像的打包的,底层是否理解
3.redis:集群哨兵模式了解吗,zsort了解吗,过期时间怎么设置,redis为何效率那么高,redis和数据库一致性,redis的特点。
2.写了个单例模式的代码。
3.violatile的语义,什么场景下会使用到
4.指令重排序的意义?
5.AOP的实现原理及使用场景有哪些?
6.Java类的初始化顺序及原因?
7.synchronized锁class对象和普通对象的区别?(我觉得没啥区别)
8.如何设计一个统计API访问次数的功能?
9.如何设计一个限流模块?
3.缓存雪崩 缓存穿透 缓存击穿都是什么意思,怎么处理
4.缓存常见的更新策略?
2.lock和synchronized的底层实现
3.AQS的实现原理
4.线上用的什么垃圾收集器?G1收集器和CMS收集器的区别?
5.线程池的几个参数?
6.线上出现过什么故障?(讲了个线程池无界队列导致OOM的情况)
7.分布式事务怎么处理?(分布式锁 or 消息队列)
8.分布式锁过期怎么解决?(不过期or续期)
9.Redis的基础数据结构?
10.Redis怎么进行分布式部署?
11.Redis集群模式下查询到非key所在节点的话会怎么处理?
12.RPC协议和HTTP协议的区别?
13.服务发现怎么做的?
14.如果注册中心挂了的话,是否还能做服务发现功能呢?
1.聊了聊项目
2.MySQL的B+树索引结构什么样的,还有其他类型的索引吗
3.慢查询怎么进行SQL优化
4.Spring是怎么解决循环依赖的
5.Spring的AOP是怎么实现的,项目里面是怎么用的
6.一道算法题,对一条链表里面每k个节点进行翻转。
7.聊了聊美团风控的架构,然后我之前的工作具体是什么样的
76、创建线程池的几个核心构造参数
77、线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
78、volatile 关键字的作用
79、既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?
80、ThreadLocal 是什么?有哪些使用场景?
81、请谈谈 ThreadLocal 是怎么解决并发安全的?
82、很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?
83、为什么代码会重排序?
84、什么是自旋
85、多线程中 synchronized 锁升级的原理是什么?
86、synchronized 和 ReentrantLock 区别是什么?
87、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?
88、jsp 和 servlet 有什么区别?
89、jsp 有哪些内置对象?作用分别是什么?
90、forward 和 redirect 的区别?
91、说一下 jsp 的 4 种作用域?
92、session 和 cookie 有什么区别?
93、如果客户端禁止 cookie 能实现 session 还能用吗?
94、什么是上下文切换?
95、cookie、session、token
96、说一下 session 的工作原理?
97、http 响应码 301 和 302 代表的是什么?有什么区别?
98、简述 tcp 和 udp的区别?
99、tcp 为什么要三次握手,两次不行吗?为什么?
100、OSI 的七层模型都有哪些?
101、get 和 post 请求有哪些区别?
102、什么是 XSS 攻击,如何避免?
103、什么是 CSRF 攻击,如何避免?
104、如何实现跨域?说一下 JSONP 实现原理?
105、websocket应用的是哪个协议
106、说一下 tcp 粘包是怎么产生的?
107、请列举出在 JDK 中几个常用的设计模式?
108、什么是设计模式?你是否在你的代码里面使用过任何设计模式?
109、Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
110、在 Java 中,什么叫观察者设计模式(observer design pattern)?
111、使用工厂模式最主要的好处是什么?在哪里使用?
112、请解释自动装配模式的区别?
113、举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?
114、什么是 Spring 框架?Spring 框架有哪些主要模块?
115、使用 Spring 框架能带来哪些好处?
116、Spring IOC、AOP举例说明
117、什么是控制反转(IOC)?什么是依赖注入?
118、BeanFactory 和 ApplicationContext 有什么区别?
119、什么是 JavaConfig?
120、什么是 ORM 框架?
121、Spring 有几种配置方式?
122、请解释 Spring Bean 的生命周期?
123、Spring Bean 的作用域之间有什么区别?Spring容器中的bean可以分为5个范围:
124、如何在 Spring Boot 中禁用 Actuator 端点安全性?
125、什么是 Spring inner beans?
126、Spring 框架中的单例 Beans 是线程安全的么?
127、请解释 Spring Bean 的自动装配?
128、如何开启基于注解的自动装配?
129、什么是 Spring Batch?
130、spring mvc 和 struts 的区别是什么?
131、请举例解释@Required 注解?
132、Spring常用注解
133、项目中是如何实现权限验证的,权限验证需要几张表
134、谈谈controller,接口调用的路径问题
135、如何防止表单重复提交
136、Spring中都应用了哪些设计模式
137、请举例说明如何在 Spring 中注入一个 Java Collection?
138、mybatis 中 #{}和 ${}的区别是什么?
139、mybatis 是否支持延迟加载?延迟加载的原理是什么?
140、说一下 mybatis 的一级缓存和二级缓存?
141、mybatis 有哪些执行器(Executor)?
142、mybatis 和 hibernate 的区别有哪些?
143、myBatis查询多个id、myBatis常用属性
144、mybatis一级缓存、二级缓存
145、mybatis如何防止sql注入
146、hibernate 中如何在控制台查看打印的 sql 语句?
147、hibernate 有几种查询方式?
148、hibernate 实体类可以被定义为 final 吗?
149、在 hibernate 中使用 Integer 和 int 做映射有什么区别?
150、什么是 Spring Boot?Spring Boot 有哪些优点?
151、Spring Boot 中的监视器是什么?
152、什么是 YAML?
153、如何使用 Spring Boot 实现分页和排序?
154、如何使用 Spring Boot 实现异常处理?
155、单点登录
156、Spring Boot比Spring多哪些注解
157、打包和部署
158、Spring Boot如何访问不同的数据库
159、查询网站在线人数
160、easyExcel如何实现
161、什么是 Swagger?你用 Spring Boot 实现了它吗?
162、数据库的三范式是什么?
163、一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?
164、如何获取当前数据库版本?
165、说一下 ACID 是什么?
166、char 和 varchar 的区别是什么?
167、float 和 double 的区别是什么?
168、Oracle分页sql
169、数据库如何保证主键唯一性
170、如何设计数据库
171、性别是否适合做索引
172、如何查询重复的数据
173、数据库一般会采取什么样的优化方法?
174、索引怎么定义,分哪几种
175、mysql 的内连接、左连接、右连接有什么区别?
176、RabbitMQ的使用场景有哪些?
177、RabbitMQ有哪些重要的角色?有哪些重要的组件?
178、RabbitMQ中 vhost 的作用是什么?
179、说一下 jvm 的主要组成部分?及其作用?
180、说一下 jvm 运行时数据区?
181、什么是类加载器,类加载器有哪些?
182、说一下类加载的执行过程?
183、JVM的类加载机制是什么?
184、什么是双亲委派模型?
185、怎么判断对象是否可以被回收?
186、说一下 jvm 有哪些垃圾回收算法?
187、说一下 jvm 有哪些垃圾回收器?
188、JVM栈堆概念,何时销毁对象
189、新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
190、详细介绍一下 CMS 垃圾回收器?
191、简述分代垃圾回收器是怎么工作的?
192、Redis是什么?
193、Redis都有哪些使用场景?
194、Redis有哪些功能?
195、Redis支持的数据类型有哪些?
196、Redis取值存值问题
197、Redis为什么是单线程的?
198、Redis真的是单线程的吗?
199、Redis持久化有几种方式?
200、Redis和 memecache 有什么区别?
201、Redis支持的 java 客户端都有哪些?
202、jedis 和 redisson 有哪些区别?
203、什么是缓存穿透?怎么解决?
204、怎么保证缓存和数据库数据的一致性?
205、Redis,什么是缓存穿透?怎么解决?
206、Redis怎么实现分布式锁?
207、Redis分布式锁有什么缺陷?
208、Redis如何做内存优化?
原文链接:https://blog.csdn.net/guorui_java/article/details/119299329
一、JDK 和 JRE 有什么区别?
二、== 和 equals 的区别是什么?
三、final 在 java 中有什么作用?
四、java 中的 Math.round(-1.5) 等于多少?
五、String 属于基础的数据类型吗?
六、String str="i"与 String str=new String(“i”)一样吗?
七、如何将字符串反转?
八、String 类的常用方法都有那些?
九、new String("a") + new String("b") 会创建几个对象?
十、如何将字符串反转?
十一、String 类的常用方法都有那些?
十二、普通类和抽象类有哪些区别?
十三、接口和抽象类有什么区别?
十四、java 中 IO 流分为几种?
十五、BIO、NIO、AIO 有什么区别?
十六、Files的常用方法都有哪些?
十七、什么是反射?
十八、什么是 java 序列化?什么情况下需要序列化?
十九、为什么要使用克隆?如何实现对象克隆?深拷贝和浅拷贝区别是什么?
二十、throw 和 throws 的区别?
二十一、final、finally、finalize 有什么区别?
二十二、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
二十三、常见的异常类有哪些?
二十四、hashcode是什么?有什么作用?
二十五、java 中操作字符串都有哪些类?它们之间有什么区别?
二十六、java 中都有哪些引用类型?
二十七、在 Java 中,为什么不允许从静态方法中访问非静态变量?
二十八、说说Java Bean的命名规范
二十九、Java Bean 属性命名规范问题分析
三十、什么是 Java 的内存模型?
三十一、在 Java 中,什么时候用重载,什么时候用重写?
三十二、举例说明什么情况下会更倾向于使用抽象类而不是接口?
三十三、实例化对象有哪几种方式
三十四、byte类型127+1等于多少
原文链接:https://blog.csdn.net/guorui_java/article/details/117376136
更多:
https://www.cnblogs.com/aishangJava/p/10544229.html