贝壳
Java 方向面经
第一篇
**一面 2019/9/21 **
1、背包都有哪些
2、模板代码都咋写
3、最长公共子串
4、最长公共子序列怎么求
**二面 2019/9/23 **
1、MySQL 各关键字的含义及用法
2、MySQL 底层的原理
3、Linux 权限、常用指令、文件系统、Shell 脚本
第二篇
**一面 2019/9/6 **
1、手写一个 insert、update 的 sql 语句
2、简历上的两个项目挑一个画流程框图
3、有用过哪些 linux 命令?
4、在文本里找指定的一个字符串,使用什么样的 linux 命令
5、项目怎么部署到服务器上的?怎么登录 linux 服务器?
6、如何使用 SpringMVC 对用户写入的参数进行修改?
7、你的项目里用过哪些 SpringBoot 的注解?
8、数据库的索引的数据结构?
9、InnoDB 默认的隔离级别?
10、线程池的参数?
11、手写线程的状态
12、HashMap
13、JVM 垃圾回收,分区?
14、手写 JVM 内存结构
15、内存结构中的堆和栈?
16、TCP 三次握手
17、手写快排
18、链表快排
19、快排的时间复杂度,空间复杂度
**二面 2019/9/7 **
1、登录逻辑?如何保证登录安全?
2、用户携带的这个 token 和谁进行比较?怎么获取 token?
3、聚簇索引,非聚簇索引,复合索引
4、如果将项目部署到两台服务器中,需要考虑哪些因素?
第三篇
**一面 201/9/12 **
1、线程池有几种
2、核心线程数和最大线程数的区别
3、为什么要有两个数
4、使用 java 类库怎么实现一个消息队列 jvm 垃圾回收
5、写快排:两个堆实现队列
**二面 2019/9/14 **
1、java 有几种基本数据类型
2、补码的作用,为什么用补码
3、冒泡的时间复杂度
4、快排的时间复杂度,为什么是这个,推倒公式
5、时间复杂度代表了什么意思,为什么用时间复杂度
6、n 个数字,找 top k,说使用最小堆,时间复杂度是多少
7、有一个字符串,比如,abbbkkkc 找出其中所有的 bk,返回最终的值,不能用 string
的类库,比如 replace,给 10 分钟,写出可运行的代码
8、消消乐游戏,怎么找到达到目标的最优解
第四篇
**一面 2019/9/10 **
1、php 中 empty 作用
2、了解的数据结构
3、口述树前序遍历
4、口述树中序遍历
5、口述层次遍历
6、lamp 网站请求过程中做了什么
7、tcp 头是否了解
8、http 状态码
9、tcp 断开连接做了什么
10、代码:约瑟夫环
**二面 2019/9/12 **
1、mysql 索引
2、数据库 acid,索引触发有什么原则
3、数据库隔离级别
4、innodb 如何解决幻读问题
5、laravel 用了哪些设计模式
6、手写单列模式
7、mysql 与 redis 区别,使用场景
8、epoll 原理
9、设计秒杀系统,考虑正确性,以及服务器不挂机如何设计
10、代码:两个数组中只存在 1 个不同元素,怎么找出来
11、反转链表
12、Java 基础你了解哪些
13、看过 ArrayList 和 LinkedList 源码
14、AOP tcp 三次握手
15、索引你用过吗
16、高并发知识你了解什么
第五篇
**一面 2019/8/24 **
1、synchronized、ReentrantLock、volatile volatile 的原理知道是什么吗?
2、线程池几种你了解过吗
3、线程池的区别,线程池参数的各自含义
4、什么时候才会达到最大线程数
5、GC 说一说吧
6、类加载机制
**二面 2019/8/26 **
1、抽象类和接口的区别,能不能用一个设计模式来说明
2、设计模式你都了解哪些
3、int 和 Integer 区别
4、Session 和 cookies 的区别
5、HTTP 在哪一层
6、HTTP 的状态码说一说
7、OOA,OOD,OOP 是什么说一下
8、数据库的乐观锁和悲观锁了解吗
9、如果给数据库加行级锁,怎么操作
第六篇
**一面 2019/8/26 **
1、输入一个 int,然后逆转这个 int 返回
2、常用的 java 命令,如 javac,java,jstack,jconsole 等
3、锁静态方法和实例方法的区别
4、项目里用的 solr,elasticsearch,为啥不用 es 之类的
**二面 2019/8/28 **
1、写个算法题,题目是 10 进制转 16 进制
2、solr 问,问基本概念,如何配置,怎么洗数据之类的
3、jvm 内存结构
4、pc 计数器和堆栈的关系
5、为啥用 FastDFS
6、Dubbo 协议,问为啥这么快
7、互联网协议:HTTP,TCP 等
第七篇
**一面 2019/9/8 **
1、讲讲 Spring,看过源码吗?说下生命周期
2、项目里,有哪些优化,怎么保证的数据的查询和插入效率?
3、mysql 的其他优化?怎么实现的?
4、mysql 的 having 和内连查询
5、https 的端口
6、说下三次握手,滑动窗口的实现?
7、jdk8 的特性
8、session 的实现
9、http 协议是有状态的吗??
10、乐观锁,怎么实现的
11、object 类有什么方法
**二面 2019/8/9 **
1、字符串 String 为什么非可变,怎么做到的
2、HashMap 的数据结构,怎么插入数据等等
3、算法题:判断链表闭环,闭环的起始节点
4、数据库:主要都是围绕索引展开
5、Spring,启动过程,中间穿插一个 SQL
6、题目描述: 小 C 在做一种特殊的服务器负载测试,对于一个请求队列中的请求, 每一
个请求都有一个负荷值,为了保证服务器稳定,请求队列中的 请求负荷必须按照先递增后
递减的规律(仅递增,仅递减也可以), 比如[ 1,2,8,4,3 ],[ 1,3,5 ]和[ 10 ]这些是
满足规律的, 还有一些不满足的,比如[ 1,2,2,1 ],[ 2,1,2 ]和[ 10,10 ]。 现在
给你一个请求队列,你可以对请求的负荷值进行增加,要求你调整队列中请求的负荷值,使 数
组满足条件。最后输出使队列满足条件最小的增加总和
7、题目描述:举重大赛开始了,为了保证公平,要求比赛的双方体重较小值要大于等于较 大
值的 90%,那么对于这 N 个人最多能进行多少场比赛呢,任意两人之间最多进行一场比赛
8、题目描述:小希偶然得到了传说中的月光宝盒,然而打开月光宝盒需要一串密码。虽然小
希并不知道密码具体是什么,但是月光宝盒的说明书上有着一个长度为 n (2 <= N <=
50000)的序列 a (-10^9 <= a[i] <= 10^9)的范围内。下面写着一段话:密码是这个序列
的最长的严格上升子序列的长度(严格上升子序列是指,子序列的元素是严格递增的,例如:
[5,1,6,2,4]的最长严格上升子序列为[1,2,4]),请你帮小希找到这个密码
9、题目描述:给出 n 个正整数,要求找出相邻两个数字中差的绝对值最小的一对数字,如
果有差的绝对值相同的,则输出最前面的一对数。2<n<=100,正整数都在 10^16 范围内
第八篇
**一面 2019/10/16 **
1、Java 的基础数据类型有哪些?String 是吗?与封装类的区别?
2、Java 中的继承和多态是什么意思?
3、抽象类和接口的区别?
4、JVM 内存划分?每个分块的用途?
5、JVM 垃圾回收机制?
6、Java 中子类的变量初始化的顺序?然后扯了一会类加载器
7、Java 中的 4 种访问权限?
8、Java 中提供的线程池?聊了一下线程池参数
9、synchronized 和 lock 的区别?扯了一下区别然后扯了一下底层实现
10、共享锁和排他锁?
11、二分查找的适用范围
12、快排,多种排序的复杂度比较
13、线程的几种状态?
第九篇
**一面 2018/9/19 **
1、一道算法题:给一个数组,输出每一个元素的后边第一个比他大的数的下标
2、四次挥手,谈谈你的理解
3、中断的理解
4、微信抢红包,是怎么实现的
5、输入一个 url,然后的一系列动作,要把各个层说出来,怎么交互的
**二面 2018/9/21 **
1、git 操作,说说 resert 和 revert 的区别
2、实现一个阻塞队列
3、数据库设计:财产权限管理:有一个财产表,用户表,申请表要求设计表,然后走一个
财产申请流程
4、手写 SQL,对设计的表的一系列操作
第十篇
**一面 2019/9/3 **
1、手写代码部分。实现一个单链表、单链表删除某节点的方法?
2、手写代码部分。用栈实现一个队列
3、i++和++i 这些是否是线程安全?为什么?如何保证安全?
4、volatile 关键字的实现原理?
5、如何保证 ABC 三个线程按顺序执行
6、JAVA 的集合全部讲一遍
7、TreeMap 是直接实现了哪个接口?
8、数据库的索引结构?
9、什么是 B+树?为什么选择 B+树作为索引结构,不选择用二叉树?
10、数据库事务隔离级别?
11、幻读的避免是如何实现的?
12、JAVA 的锁有几种?synchronized 和 lock 的分别原理?
13、SyclicBarrier 中,如何通知阻塞的线程?
**二面 2019/9/3 **
1、你有什么问题要问我的吗?
2、情景题:日志文件中有 IP 和时间。找出 10min 内出现次数超过 800 的 ip