前言

30min.感觉面试官兴致不是很高.问的问题也更多问一些对项目个人负责相关以及个人在项目上的总结之类.并没有问很深入的理论知识.感觉被调戏了QAQ,为啥那些社招大佬的面经一个比一个厉害

1. 自我介绍

个人情况、最近工作项目介绍、项目技术栈介绍、个人负责开发功能介绍

2. 面试官又让介绍项目场景

介绍了项目场景与个人负责功能

3. SpringMVC和SpringBoot区别

面试官一直给我说SpringBoot可以替代SpringMVC.想让我改口,使用SpringBoot就可以不用SpringMVC了
这里我的理解是: SpringBoot是工具箱,SpringMVC是里面的可能一个钳子/锤子/锯子;我们之前是要做产品得去找钳子、锤子、锯子,还得配好锤子多大的,什么类型的锤子.这里工具箱来了就都不用考虑了.工具箱给我们配好了我们要用什么,除非我们有的工具规格不喜欢我们可以换;但是大部分情况下,使用工具箱配置好的就没有问题

  1. SpringMVC是Spring中实现Web应用的框架,方便我们进行Web应用开发工作.是一个功能性开发框架
  2. SpringBoot是Spring用来辅助我们快速集成/使用其他功能组件的框架,通过Sring-boot-starter-web即可直接集成SpringMVC框架及其使用它的功能.核心功能还是SprringMVC在做.只不过SpringBoot把它封装成了一个依赖组件,并且内部配置好了默认的配置(约定大于配置:我们只需要使用他们规定好的信息就好尽量不动,当有需要改动的再去修改)
  3. 可参考这个: Spring、SpringMVC和Springboot的区别

4. 介绍项目中个人职责

这里主要询问的是个人是否在项目中处于一个开发功能比较大的地位.是否是一个类似leader类型的角色

5. 介绍个人在项目中收获最大的点

web实时通信模块开发,学习websocket协议以及Rabbitmq和消息队列相关知识.并把消息队列引入项目中,把项目一些大模块进行了一个拆分解耦

6. 介绍自己在项目中最擅长的内容

这里真的不怎么会说. 因为真的是全是CRUD类型工作.顶多基础模块改造拓展会由我来写,但是感觉踩在前辈的肩膀上走,查看完资料了解下原理实现了就好了.很长时间不用就又忘掉了.像单点登录授权拓展,邮件、实时通信、同步备份这种,到时候再改动查看一定还是要去复习才能继续开发的.
所以我说的是擅长业务需求梳理以及数据模型抽象、业务接口抽象和分配.还有就是通过查找其他博客进行一些业务功能开发.

7. 创建线程的方式

3种: 继承Thread、实现Rannable、使用创建线程池(这里我顺便讲了线程池的七个参数)

8. Redis实现排行榜的原因

业务简单、实现方便、数据量小、实时性以及接口响应速度要求比较大;

9. Redis的数据结构

5种: String、List、Hash、Set、ZSet

10. Redis两种持久化方式介绍

RDB和AOF; Redis默认开启RDB持久化;可通过redis-check-aof/rdb修复备份文件;Redis更倾向于用AOF恢复数据,因为丢失数据最少

  1. RDB: Redis某一时间点的Redis数据内存快照;redis启动时,会先加载dump.rdb文件,将磁盘快照加载到Redis内存中; RDB操作是可配置的,功能是指定时间间隔内,数据变更超过指定次数就会触发RDB操作,Redis进行showdown时也会执行RDB操作.当Redis开启集群模式时,从节点与主节点第一次连接主节点就会先发送一份RDB的全量文件给从节点(所以集群模式不能关闭RDB).就是宕机时丢失数据量大,二进制数据保存,备份和还原速度快适合迁移备份.并且新的快照会覆盖老的快照文件
  2. AOF: 指令增量存储文件.AOF触发机制可配置为no(由操作系统自行刷盘)、always(每个数据变更指令都会立马记录保存)、everysec(每秒保存一次变更记录,默认.最多丢失2s的数据).AOF机制是增量保存Redis对数据的改动命令,所以当AOF文件大于一定阈值(该次文件增长大小大于一定比率,并且可配置当大于64M时)则会触发重写.将当前内存生成快照引用,AOF保存当前快照数据.然后替换旧的AOF文件,并继续增量写入
    可参考: Redis持久化
    一文看懂Redis的持久化原理

11. 我们使用的那种持久化方式

我们用的RDB方式,因为我们没有使用Redis作为数据库使用,数据都是保存到磁盘上的.Redis仅作为缓存来加速响应的功能,就没有开启AOF;

12. 加班和出差考虑吗

肯定说不介意

13. 个人能力&学习规划

主要个人抗压能力、学习能力介绍(企业评审第一外包转正,一个月考的中级证书、加上每天下班学习到凌晨一点、定期发学习博客、以及刷题之类的)
学习规划主要将自己的技术栈沉淀下来,更多关注一些原理层面的只是: 将Spring主要功能的源码解读下,并且拓展一些设计模式,现在了解设计模式比较少,看源码也比较吃力(跳来跳去的).然后在数据库层面知识了解比较少,需要更多的去学习下.

14. 反问: 业务场景

这里询问工作主要的工作内容是什么.明白问题为啥会简单啦.因为并不需要做很难得工作,只是业务功能开发出差到客户那里进行平台功能二次开发QAQ果然菜鸟的命运只能这样吗