1、阅文集团实习
- 自我介绍
- 实验室项目的内容
- 使用的框架是什么?
- spring ioc和aop的含义
IOC是控制反转
AOP是面向切面编程
- TCP三次握手的流程
- 数据库事务有哪些特性
事务:用户的操作由一系列数据库操作组成的,这一系列操作应该作为整体执行,要么全部执行,要么全部不执行。
四大特性(ACID):
1、原子性(Atomic)
事务的操作作为整体执行,要么全部执行,要么全部失败
2、一致性(Consistency)
数据在事务执行之前和执行之后,处于一致状态
3、隔离性(Isolation)
多个事务之间是隔离的,互不影响
4、永久性(Durability)
一旦事务提交了,对数据库的修改是永久性的
- 你知道的垃圾回收算法
- 最喜欢哪种数据结构?
上面的问题问的十分大。是Java面试的必问问题
- 自我介绍
- 学校项目用了哪些技术栈
- spring boot和spring的区别
Spring 是一个“引擎”
Spring MVC 是基于 Spring 的一个 MVC 框架
Spring Boot 是基于 Spring4 的条件注册的一套快速开发整合包
- ioc的流程
依赖倒置
- aop的实现原理
切面编程
- 说一说你看过的spring cloud源码???
- 四次挥手的流程
- 为什么需要4次挥手
- http协议的端口号
- 讲一讲ssh协议的源码???
- Java中的线程创建
要回答四种方式
- 线程是怎么实现的
- 线程最底层的数据结构是什么???
- java虚拟机运行的流程
- 堆区如何分类
- 垃圾回收有哪些算法
- java虚拟机的核心设计思想???
- 自我介绍
- 介绍学校项目1
- 介绍学校项目2
- 介绍知识图谱的逻辑
- 知识图谱怎么生成?
- 非关系型数据库和关系型数据库的区别?
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
- 事务的四大特性
事务:用户的操作由一系列数据库操作组成的,这一系列操作应该作为整体执行,要么全部执行,要么全部不执行。
四大特性(ACID):
1、原子性(Atomic)
事务的操作作为整体执行,要么全部执行,要么全部失败
2、一致性(Consistency)
数据在事务执行之前和执行之后,处于一致状态
3、隔离性(Isolation)
多个事务之间是隔离的,互不影响
4、永久性(Durability)
一旦事务提交了,对数据库的修改是永久性的
- 数据库的隔离级别
事务隔离级别
为了避免上面出现的几种情况,在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同。
读未提交(Read Uncommitted):只处理更新丢失。如果一个事务已经开始写数据,则不允许其他事务同时进行写操作,但允许其他事务读此行数据。可通过“排他写锁”实现。
读提交(Read Committed):处理更新丢失、脏读。读取数据的事务允许其他事务继续访问改行数据,但是未提交的写事务将会禁止其他事务访问改行。可通过“瞬间共享读锁”和“排他写锁”实现。
可重复读取(Repeatable Read):处理更新丢失、脏读和不可重复读取。读取数据的事务将会禁止写事务,但允许读事务,写事务则禁止任何其他事务。可通过“共享读锁”和“排他写锁”实现。
序列化(Serializable):提供严格的事务隔离。要求失去序列化执行,事务只能一个接一个地执行,不能并发执行。仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。
- 乐观锁与悲观锁的区别
- 三次握手的流程
- 为什么需要3次
- http协议的流程
- http如何保存登录信息
- cookies和session的关系
- 进程和线程的关系
- 进程之间通信的5种方式
- 数组和链表的区别
- hash表插入的流程
- 工厂模式的含义
工厂模式简单的讲就是用工厂方法代替了new的操作,
在通俗点就是说,你new一个对象的时候直接调用工厂方法就行了,
在编程时,需要定义一个工厂接口,由不同的的子类去实现,再定一个具体工厂类,定义一个产生实例的方法,我们通过这个方法来获得实例就行了,
- 算法题:寻找两个有序数组的中位数。
2.hasmap讲一下(讲出来了)
3.B+树讲一下(额,不了解)
4.红黑树讲一下(额,也不了解)
二面:
- 知识图谱如何寻找相距一个点距离为2的点
- http协议如何保证安全性
- 非对称加密的原理
- https协议的原理
- 阻塞式io和非阻塞式io的区别
- select,poll,epoll的区别
- 如何加快数据库查询速度
使用索引
- 聚集索引和非聚集索引的区别
定义:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。
定义:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,一个表中可以拥有多个非聚集索引。
- 什么时候不该使用索引?
- 索引底层的数据结构
- 了解多少大数据的知识
- 算法题1:对单链表进行排序
- 算法题2:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。求跳到最后一个位置的最小次数。(跳跃游戏2)
一面(13min)
-
介绍比较熟悉的项目
-
上线了吗
-
什么是线程安全?
多个线程访问共享变量,能正确操作共享变量。
-
不安全是什么样的情况?
-
Java 中有哪些方式可以实现线程安全?
-
Synchronized 和 Lock 有什么区别?
-
怎么理解可重入?
-
集群环境下怎么实现线程安全?怎么同步实现?
分布式锁?
-
接触过 Redis 吗?
-
介绍一下 Java 中的 String
-
String 为什么要设置为不可变的?
-
项目中什么情况下用到多线程?
-
线程池有什么优势?
-
有接触过消息队列吗?你觉得消息队列可以解决什么问题?
-
自己平常对哪方面技术比较感兴趣?
-
研究方向是什么?
1、自我介绍
2、平时使用java多少版本,java 1.8有啥新特性 问了下lambda 表达式
3、平时使用哪些spring 的版本
4、说下spring 的aop ,在哪些地方使用,注解放在哪些地方
面向切面编程
5、接口和抽象类的区别
6、多态是啥,如何使用,使用在哪些方面
7、平时看过哪些集合源码,ArrayList, LinkedList, HashMap
8、项目中真正使用过哪些设计模式 单例,使用在哪些方面,为什么使用
9、给一个简单场景,写个sql
10、反射了解过吗,说一下
11、3次握手,4次挥手, 详细说下
12、jvm了解过吗, 了解哪些部分,那我问你下那个 新生代 具体分为哪些部分,新生代和老年代是如何进行垃圾回收的,口头语说下复制算法怎么做的,标记-清理算法又是怎么做的
13、了解SOA吗
14、了解微服务吗
15、为啥你那个公司还使用JavaRMI 。。。
16、git,svn了解吗,他俩有啥区别
17、平时使用哪些编译工具(idea,eclipse)
18、RPC了解吗,远程服务接口一般如何写的
19、禅道使用过吗
20、Jenkins使用过吗,能说下吗
21、能接受出差吗
22、实习技术上你最大的收获是啥
23、毕业设计需要几个月完成
24、你后几年想忘哪方面发展。。。。。。
shopee一面(1小时5分钟)8.16
1、进程线程区别
2、TCP UDP区别
3、TCP三次握手,四次挥手。为什么四次?为什么三次?
4、TCP拥塞控制
5、time_wait
6、HashMap全家桶
7、MySQL存储引擎有几种,myisam和innodb有哪些区别?
8、聚簇索引和非聚簇索引
8、B-树和B+树应用场景和区别、优缺点
9、MySQL隔离级别
四种
MySQL乐观锁怎么实现
10、ip子网划分
11、JVM内存模型
12、怎么查看JVM参数(堆啥的占用比)
13、新生代老年代是怎么划分的
14、进程间通信方式
15、讲一下fork
16、redis跳跃表,redis持久化
出题算法数组扁平化、数组求交集O(n)
shopee二面(45分钟) 8.24
全程挖项目里的点,根据项目深挖。然后一些场景题
登录怎么做的?分布式session?
订单表怎么区分买家端和卖家端?你怎么设计订单表的?数据库表数据膨胀怎么办(我说了水平拆分和垂直拆分)?那拆分维度呢?我balabala说怎么拆分。那么你这么拆分有什么问题吗?我如果要做排序呢?我balabala。那如果我就要取某个商家或者某个用户的订单呢?我balabala。那我就取中间10条呢?就问到你答不上来为止。
项目Redis怎么用?怎么保证Redis高可用?怎么解决缓存和db一致性?热点key?缓存雪崩?逮着一个点一直问
微博出现热搜服务挂了,你觉得是什么原因?你会怎么解决?我balabala。这里也一直追问
就大概记得这些了。
问的点不多,就是根据你项目问你难点,然后你给思路,然后又根据你的思路继续追问,直到你答不上来。
今天下午面了海康威视,现在做个复盘,积攒下RP。
首先是一面。特点:照着简历从头到尾问,探查你得技术栈深度.
1、数组和链表的区别?
2、数组的索引是什么,优缺点是什么?
3、说一下Redis,优点,缺点,缓存雪崩和缓存击穿的问题,以及其解决办法是什么?
4、mysql的索引有哪两种,他们的特点分别是什么,Innodb的底层是怎么实现的(B+树)B+树的特点,B树是什么?
5、redis和mysql的同步怎么做?
6、多线程的实现方式是什么,线程池有哪些?有几种线程池?newCachedThreadPool特点是什么?线程池中如果循环队列满了以后会怎么样?
7、说一下springmvc框架是什么?springboot和springmvc是什么关系,为什么你的项目都是使用springboot开发,springboot和spring的区别和联系?
8、Spring的IOC和AOP?IOC的设计模式,你了解什么设计模式,除了单例和工厂模式?(回答了任务链模式,策略模式)写一个单例(双重校验锁手撕代码)。
9、如果遇到代码里有很多if。。else的多重嵌套该怎么优化代码?(这个一下子没想到,面试官回答的策略模式)
10、对于微服务了解多少?springcloud了解多少?springcloud和dubbo的区别?docker了解多少?
项目的东西:
11、前端往后端接口传递一条url包括什么?请求体中一般会有什么内容?接口上的注解通常有哪几个?
12、你的表一般是怎么创建的?回答通过映射进行表创建。
13、表创建时候的注解一般有哪几种?回答:主键,非空,自增这些。
14、接口逻辑有没有很复杂的?介绍一下其中的两个项目。
一面结束,大概问了40分钟左右。
二面:HR面20分钟。
就是常规的一些问题。