最近开始找工作了,坐标杭州。渣渣感觉面试应该挺困难的,也不知道具体会问哪些类型,会在面试完把每一次面试问到的题目列出来, 一个作用是参考记录,另一个作用是可以把自己不会或者弱项的问题及时补齐。
暂时是先把问题列出来,有时间的时候会把答案补上。
希望能找到一个好工作,加油
我大概总结一下,小型公司2年以下开发主要业务就是CRUD,招人肯定是希望能立马上手,所以面试范围我押题是常用的框架(SpringBoot、Spring基本概念,Mybatis),事务、数据库相关(锁、事务级别、sql优化,数据库底层概念等)、异常。有些会问一些设计模式(主要掌握工厂模式、单例模式、代理模式。)。
中大型公司的话,加上 JVM,集合,并发编程,一些网络知识。有些可能还会有一两道算法题。甚至开始问分布式了,具体看他们业务。
大厂请直接参考我画的java路线图,大厂知识路线没有3年以下之分,只有深/广度之分:Java知识体系脑图(2020年)
本次面试过程
- 背景
金融类公司。在线面试,就突然收到笔试邮件,两天内登陆,限时150分钟,有4道算法题,一些单选题,多选题、填空题、简答题,共计50个。需要开启摄像头,不许切出全屏答题页面。
- 过程
不知道有几次,我猜测笔试过了应该再面试;HR也没联系我就直接发了一个笔试邮件,先做了再说,不然今天就超时了。简历投的太多也不知道具体是哪一家公司了。题也比较多,做完只能记住一些大概了。
- 后续
过了5天后,收到了面试邀请,去了现场面试,流程有点乱,HR没告诉面试官,我一面完差点就走了,然后走之前告诉HR我准备离开又叫回去了,最后经过三轮(技术面,技术负责人面、总监面)面试。
笔试题
单/多选题
单/多选题忘了题目了共计20+道,大概范围是java基础、spring(原理以及一些注解)、mybatis、mysql、事务;docker有两道。
填空题
题数10+,例如:
1.Java定义整形变量的关键字,四个空
我猜测是基本数据类型,写了int、long、short、byte。
2、mybatis有哪两种事务机制
使用JDBC事务管理机制:使用JDBC的事务管理机制:即使用java.Sql.Connection对象完成对事务的提交,回滚和关闭操作。
使用MANAGED的事务管理机制:mybatis本身不会去实现事务管理的相关操作,而是交个外部容器来管理事务。当与spring整合使用后,一般使用spring来管理事务。
3、只有满足条件的记录才会包含在查询记录中,是什么连接?
这题我看得比较懵,但是看描述应该是 内连接 (inner join),在网上查也是内连接。
4、JPA的Entity自定义主键策略使用哪个注解?
答案:@GenericGenerator
和 @GeneratedValue
注解。
之前没怎么用Sping-Data-JPA,这题完全懵。
- JPA中主键策略用法
在JPA中,我们是通过@id
和@GeneratedValue
来指定id主键和id策略的,比如:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private String id;
- 4种JPA策略用法
我们点进@GeneratedValue
源码里可以看到,strategy
属性是由GenerationType
指定的,我们点进GenerationType
里面可以看到这里定义了四种策略:
- TABLE:使用一个特定的数据库表格来保存主键。
- SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
- IDENTITY:主键由数据库自动生成(主要是自动增长型)
- AUTO:主键由程序控制(也是默认的,在指定主键时,如果不指定主键生成策略