面经

184 阅读5分钟

面试经历记录

南京亚信万联南昌分公司

问题

  1. 自我介绍
  2. 项目介绍 1.
  3. MySQL查询关键字
    1. 内外连接:inner join 、left join、right join
    2. select、or、limit、group by、order by、distinct(去重)、like、in
  4. Redis数据类型
    1. 字符串String:一个key对应一个value
    2. 列表List:字符串列表
    3. 集合Set:无序集合
    4. 散列Hash:key-value,适合存储对象,类似一个对象的多个字段和属性
    5. 有序集合Zset
  5. SpringBoot的注解
    1. @SpringBootApplication
    2. @SpringBootConfiguration
    3. @EnableAutoConfiguration
    4. @ComponentScan
  6. Spring依赖注入的注解,区别
    1. @Resource:优先对类名进行注入,当接口有多个实现类时,使用name属性进行标注
    2. @Autowired:优先对类型进行注入,使用@Qualify注解进行名称注入
  7. 事务的注解
    1. @transational
  8. @RestController注解,@RequestBody,@ResponseBody注解
  9. 对IO流的了解,做什么的?
    1. 文件读写
  10. Restful风格的注解
    1. Getmapping,PostMapping,DeleteMapping,PatchMapping,PutMapping
  11. 项目中用Redis做了什么
    1. 登录存储token
  12. 有哪些集合
    1. 实现Collection接口的单列集合
      1. List
        1. ArrayList
        2. LinkedList
      2. Set
        1. HashSet
        2. TreeSet
      3. Queen
        1. Dequeen
    2. 实现Map接口的双列集合
      1. HashMap
      2. LinkedHashMap
      3. TreeMap
  13. spring的理解
    1. Spring是框架,是容器,是生态。最重要的IOC和AOP,IOC是控制反转,AOP是面向切面编程。

长沙先进数通---线上面试25min

面试官两个人,盘问项目,一个面试官全称盘问项目流程细节

问题

  1. 自我介绍
  2. 项目介绍
    1. API开放平台,第三方平台
      1. 后端:登录、注册、接口调用、接口次数统计
      2. SDK:调用第三方接口的客户端,提供第三方接口的地址,SDK中集成提供调用该接口的实现接口。后端导入SDK进行调用。
      3. 网关:API鉴权、接口调用次数统计、日志打印等统一业务处理
      4. RPC远程调用:网关作为客户端,后端作为服务端
      5. 如果新增一个接口,后端如何处理,规范接口的请求参数格式。SDK聚合出不同类型的请求,后端根据前端传入的参数判断是哪种请求,调用对应的SDK提供的接口,根据前端传入的参数进行查找数据库中的接口信息的URL,请求参数等,并一同传入SDK的接口中,SDK接口中利用Hutool工具包进行请求调用。
  3. 如果是get类型的请求,如何处理?
    1. 如上
  4. 项目中是如何运用Dubbo的,为什么要用网关?
    1. Dubbo 远程调用,网关作为客户端,后端作为服务端。API鉴权、接口调用次数统计,日志打印等,API鉴权需要查询用户表,接口调用次数统计需要调用接口调用表,后端已经连接数据库了,如果在网关进行数据库的连接会增加工作量,所以采用远程调用,利用@DubboReference注解注入接口,启动类上使用@EnableDubbo,接口的实现是在后端进行实现。
  5. List、Set、Map的区别
    1. List、Set单列集合,Map双列集合
    2. List有序有索引,可重复
    3. Set没有索引,不可重复
  6. HashMap和TreeMap的选择
    1. HashMap大多数情况下有更好的性能,尤其是读数据。在没有排序要求的情况下,使用HashMap。
  7. HashMap和HashTable的区别
    1. 后者是线程安全的
  8. 多线程的情况下使用Map集合的话使用哪种集合?
    1. ConcurrentHashMap
  9. HashMap产生哈希冲突之后的处理?
    1. 首先判断key是否相同,相同则对value进行覆盖
    2. key不同,判断链表是否大于8,大于8
    3. 进入树化的逻辑,判断数组是否大于64,大于64则进行树化
    4. 否则,对数组进行扩容。

用友软件公司-----电话面试12min

在外面练车,突然接到电话面试,直接站在马路边上面试。

问题

  1. 自我介绍

  2. 介绍项目

  3. 职业规划

  4. 对自己打分

  5. MySQL优化慢查询

    1. 定位慢查询:
      1. 慢日志查询
      2. Skywalking
    2. 用explain分析耗时的SQL语句
      1. 通过key和key_len检查是否命中了索引
      2. 通过type字段查看是否存在全索引扫描或全盘扫描
      3. 通过extra建议判断,是否出现了回表,如果出现了,可以尝试添加索引或修改字段来修复。

    第一种方法:

    1. 打开慢查询日志
    2. 查看慢查询日志
    3. 用explain分析耗时的SQL语句,针对性优化

    第二种方法:采用第三方工具例如Skywalking,监测哪个接口执行慢。

  6. MySQL误删了表怎么办

    1. 查看是否有数据库备份文件
    2. 没有备份文件,检查binlog是否开启,binlog是数据库二进制日志文件,存储操作过该数据库的操作指令
  7. Mybatis的#{}和${}的区别

    1. #{}是占位符,可以防止SQL注入
    2. ${}是字符串拼接,如果参数是字符串类型则需要手动加上引号
  8. 如果git上合并了队友的代码怎么办

    1. 查看git log,需要回到哪次commit提交的位置,复制commit的id

    2. 使用命令回退

    3. 将代码强制推送到远程