第一次面试记录
1.你目前的职业规划?
找一个符合薪资预期并且能够让自己有所发展有所进步的java后端开发工作
2.你掌握了哪些Java技术?
2.1自己当时的回答
spring、springmvc、springboot、mybatis
2.2应该这样回答
javase、javaweb、ssm、mybatis、mybatisplus、redis
3.你有没有工作经验或者项目经历?
3.1自己当时的回答
有项目经历,两个跟着学校实训做的(巴拉巴拉巴拉),一个黑马旅游网(巴拉巴拉巴拉)
3.2应该这样回答
两个实训做的一笔带过,黑马旅游网重点介绍用的技术有:mvc模式、javaweb、redis、nginx
详细介绍:
4.你为什么想要走java方向?
4.1自己当时的回答
一开始打算走c++,但是学校培养偏向java方向
4.2应该这样回答
学校培养偏向java方向
5.说一下spring、springmvc、springboot的区别
5.1自己当时的回答
罗里吧嗦半天没说清楚,说了自己一次学了这三样,再说了springboot对自己来说最大的用处就是逆向工程。
5.2应该这样回答
1.Spring 是一个“引擎”;
2.Spring MVC 是基于Spring的一个 MVC 框架 ;
3.Spring Boot 是基于Spring4的条件注册的一套快速开发整合包
5.3或者这样回答
1.spring是用来简化web开发的
2.springmvc是用来简化servlet的
3.springboot是用来快速构建项目的
4.springmvc和springboot都是基于spring进行开发的工具
6.说一下springboot有哪些配置文件
6.1自己当时的回答
听到配置文件都懵逼了,从来没有关注过,说了一些mybatis配置,拦截器配置
6.2应该这样回答
pom.xml配置起步依赖(spring-boot-starter-parent)和必要的坐标资源
application.yml配置数据源、服务启动端口等
7.说一下springboot常用的注解
7.1自己当时的回答
bean、component、service、controller
7.2应该这样回答
1.开发控制类(controller层)
- @RestController
- @RequestMapping
- @Autowired 、@Resource
- @GetMapping 、@PutMapping 、 @patchMapping 、 @PostMapping 、 @DeleteMapping
- @PathVariable
2.服务层(service)- @Service
- @Autowired 、@Resource
3.数据层(dao)- @Mapper
- @Select 、 @insert 、 @update 、 @delete
- @param
4.数据表对象层- @TableName
- @TableField
- @TableId
- @TableLogic
- @Version
5.测试类(test)- @SpringBootTest
- @Autowired 、@Resource
- @Test
2.启动类- @SpringBootApplication
8.如何应对高并发
8.1自己当时的回答
没用过
8.2应该这样回答
暂时没有遇到过这样的问题,自己所做的项目也没有考虑这方面的问题
9.mybatis一级缓存和二级缓存的区别
9.1自己当时的回答
不知道,追问:实现原理,答:不知道
9.2应该这样回答
1.一级缓存是什么?
一级缓存对一个会话中的数据进行缓存。当对数据库有查询操作时先找缓存,如果缓存里没有数据就在数据库查询然后存入缓存。如果一级缓存时对数据库进行增删改操作的话就会清空缓存,下一次查询时又从数据库缓存数据。
2.二级缓存是什么?
二级缓存就是在一级缓存之前再加一级缓存,当对数据库进行查询操作时先根据namaspace查找二级缓存中是否存有数据,如果有就读出,如果没有就再去找一级缓存,如果一级缓存也没有再进入数据库查找,最后返回时将数据分别存放到一级缓存和二级缓存。如果后续对数据库有增删改操作会清空一级缓存和二级缓存。
3.区别
- 一级缓存的作用域是一个sqlsession内;
- 二级缓存作用域是针对mapper进行缓存;
- 启用二级缓存比一级缓存更耗费时间和空间
10.集合和数组的区别
10.1自己当时的回答
创建的方式和添加元素的方式不同
10.2应该这样回答
1.集合的长度可变,数组的长度不可变
2.数组需要声明元素类型,集合不用
3.数组的元素类型只能是一种,集合可以是多种
4.数组能够存储基本数据类型或者引用数据类型,集合只能存储引用数据类型
11.实例化对象的方式有哪些?
11.1自己当时的回答
new 和自动代理
11.2应该这样回答
1.使用new关键字;
Person p = new Person();
2.使用Class类的newInstance方法;
Person p = Person.class.newInstance();
3.使用Constructor类的newInstance方法;
Person p = Person.class.getConstructor.newInstance();
4.使用clone方法;
Person p1 = (Person)p.clone();
5.使用反序列化。
ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj")); Employee emp5 =(Employee) in.readObject();
12.java操作数据库采用了什么模式
12.1自己当时的回答
没回答上,我也很懵逼,什么模式?
12.2应该这样回答
现在也是懵逼的
13.HashMap是线程安全的吗?
13.1自己当时的回答
应该是吧,我也不知道,结果面试官告诉我不安全
13.2应该这样回答(晚点来补这个知识)
14.第一次面试感想
这次面试总体上来说是失败的,属于一问三不知的情况,不过好在我本来就抱着了解基本情况和基本流程的心态和目的去的,所以对我来说没什么落差,反而有所收获。第一:面试官对自己的技术方面的提问是根据自己的描述来的。第二:面试官对自己的期望也没有网传的那么高,总的来说比较注重基础,还有一些基本的东西。第三:不管网上看过多少次模拟面试,也不如自己亲自线下碰一碰重要,还有很多感受是无法言说的,必须自己亲自去体验后才能知道自己接下来的方向和该努力的点。