面试经历记录
南京亚信万联南昌分公司
问题
- 自我介绍
- 项目介绍 1.
- MySQL查询关键字
- 内外连接:inner join 、left join、right join
- select、or、limit、group by、order by、distinct(去重)、like、in
- Redis数据类型
- 字符串String:一个key对应一个value
- 列表List:字符串列表
- 集合Set:无序集合
- 散列Hash:key-value,适合存储对象,类似一个对象的多个字段和属性
- 有序集合Zset
- SpringBoot的注解
- @SpringBootApplication
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @ComponentScan
- Spring依赖注入的注解,区别
- @Resource:优先对类名进行注入,当接口有多个实现类时,使用name属性进行标注
- @Autowired:优先对类型进行注入,使用@Qualify注解进行名称注入
- 事务的注解
- @transational
- @RestController注解,@RequestBody,@ResponseBody注解
- 对IO流的了解,做什么的?
- 文件读写
- Restful风格的注解
- Getmapping,PostMapping,DeleteMapping,PatchMapping,PutMapping
- 项目中用Redis做了什么
- 登录存储token
- 有哪些集合
- 实现Collection接口的单列集合
- List
- ArrayList
- LinkedList
- Set
- HashSet
- TreeSet
- Queen
- Dequeen
- List
- 实现Map接口的双列集合
- HashMap
- LinkedHashMap
- TreeMap
- 实现Collection接口的单列集合
- spring的理解
- Spring是框架,是容器,是生态。最重要的IOC和AOP,IOC是控制反转,AOP是面向切面编程。
长沙先进数通---线上面试25min
面试官两个人,盘问项目,一个面试官全称盘问项目流程细节
问题
- 自我介绍
- 项目介绍
- API开放平台,第三方平台
- 后端:登录、注册、接口调用、接口次数统计
- SDK:调用第三方接口的客户端,提供第三方接口的地址,SDK中集成提供调用该接口的实现接口。后端导入SDK进行调用。
- 网关:API鉴权、接口调用次数统计、日志打印等统一业务处理
- RPC远程调用:网关作为客户端,后端作为服务端
- 如果新增一个接口,后端如何处理,规范接口的请求参数格式。SDK聚合出不同类型的请求,后端根据前端传入的参数判断是哪种请求,调用对应的SDK提供的接口,根据前端传入的参数进行查找数据库中的接口信息的URL,请求参数等,并一同传入SDK的接口中,SDK接口中利用Hutool工具包进行请求调用。
- API开放平台,第三方平台
- 如果是get类型的请求,如何处理?
- 如上
- 项目中是如何运用Dubbo的,为什么要用网关?
- Dubbo 远程调用,网关作为客户端,后端作为服务端。API鉴权、接口调用次数统计,日志打印等,API鉴权需要查询用户表,接口调用次数统计需要调用接口调用表,后端已经连接数据库了,如果在网关进行数据库的连接会增加工作量,所以采用远程调用,利用@DubboReference注解注入接口,启动类上使用@EnableDubbo,接口的实现是在后端进行实现。
- List、Set、Map的区别
- List、Set单列集合,Map双列集合
- List有序有索引,可重复
- Set没有索引,不可重复
- HashMap和TreeMap的选择
- HashMap大多数情况下有更好的性能,尤其是读数据。在没有排序要求的情况下,使用HashMap。
- HashMap和HashTable的区别
- 后者是线程安全的
- 多线程的情况下使用Map集合的话使用哪种集合?
- ConcurrentHashMap
- HashMap产生哈希冲突之后的处理?
- 首先判断key是否相同,相同则对value进行覆盖
- key不同,判断链表是否大于8,大于8
- 进入树化的逻辑,判断数组是否大于64,大于64则进行树化
- 否则,对数组进行扩容。
用友软件公司-----电话面试12min
在外面练车,突然接到电话面试,直接站在马路边上面试。
问题
-
自我介绍
-
介绍项目
-
职业规划
-
对自己打分
-
MySQL优化慢查询
- 定位慢查询:
- 慢日志查询
- Skywalking
- 用explain分析耗时的SQL语句
- 通过key和key_len检查是否命中了索引
- 通过type字段查看是否存在全索引扫描或全盘扫描
- 通过extra建议判断,是否出现了回表,如果出现了,可以尝试添加索引或修改字段来修复。
第一种方法:
- 打开慢查询日志
- 查看慢查询日志
- 用explain分析耗时的SQL语句,针对性优化
第二种方法:采用第三方工具例如Skywalking,监测哪个接口执行慢。
- 定位慢查询:
-
MySQL误删了表怎么办
- 查看是否有数据库备份文件
- 没有备份文件,检查binlog是否开启,binlog是数据库二进制日志文件,存储操作过该数据库的操作指令
-
Mybatis的#{}和${}的区别
- #{}是占位符,可以防止SQL注入
- ${}是字符串拼接,如果参数是字符串类型则需要手动加上引号
-
如果git上合并了队友的代码怎么办
-
查看git log,需要回到哪次commit提交的位置,复制commit的id
-
使用命令回退
-
将代码强制推送到远程
-