零 注意
1 少说内个,然后
2 录音,复查不足
一 自我介绍
xx你好,我是xx。前年我在xx参与了xx微服务模块开发,测试,用到了sc框架。之后在xx参与xx开发。去年在xx负责xx开发,用的xx框架。
二 问题
1 springcloud用过哪些组件?——网关zuul,注册中心eureka,服务调用feign,负载均衡ribbon,熔断器hystrix,配置中心apollo(其它例如中间件mq,缓存redis,分布式事务lcn)。
2 开发中遇到的问题?——(分布式事务不常用,按面试听到的说法连阿里都不敢用);循环微服务调用时会出现调用失败,原因为调用次数超过熔断器线程隔离的线程池数量,调大配置解决。
3 中台的理解?——介于前后台之间建立一个中台,区别于传统的前后端在一起的项目,中台前后端分离,对外提供的是接口,web前端框架、移动端以及其它第三方都可以对接这个中台,中台再定期与核心做数据同步,可避免一套系统开发一套后台的冗余工作。
4 feign用法/原理?——建立接口类,注解服务名,接口方法与被调用方法保持一致。本地调用feign方法,feign动态代理中的负载均衡ribbon会根据服务名从注册中心拉取的地址列表中,根据算法确定一条地址,拼接feign接口方法注解的地址得到最终调用路径,再由熔断器hystrix调用,若失败并重试达到配置次数后进入熔断方法降级处理。
5 配置中心用法?——微服务设置自己的id,启动时从配置中心拉取id对应的配置内容,方便管理不用重复配置application.properties/yml。
6 注册中心用法/原理?——注册中心接受微服务的注册,缓存地址,监听微服务的心跳,向微服务提供地址列表,注销下线的微服务;微服务注册、拉取地址,定时发送心跳说明自己在线。
7 mq队列特点(选型/区别)?——kafka吞吐量大,无确认机制,不能持久化;rabbitmq有确认机制,更安全,效率低些;activemq资源消耗大,只有两种模式;zeromq已不维护。
8 rabbitmq的模式?——1一对一生产消费2一对多队列3订阅发布4发布到交换机绑定的所有队列5发布到通配符匹配的队列。
9 配置中心与mq?——配置中心用到订阅发布模式,配置中心为发布者,拉取配置的微服务为订阅者/消费者。
10 mq会重复消费、漏消费?——可能。订阅同一队列的消费者若确认机制不完善可能重复消费、漏消费。
11 mq着急的任务可以先消费?——创建优先队列。
12 mq确认机制?——生产消费都有确认机制。
13 mq批量确认——相比每条都确认一次效率更高,可优化。
14 mybatis一级缓存、二级缓存作用域?——一级会话,二级应用。一级缓存本次会话内相同sql只首次查库;二级缓存所有相同sql只首次查库,直到更新。
15 mybatis二级缓存更新条件?——到期、本namespace中发生增删改。
16 mybatis清除缓存机制?——一级缓存随sqlsession销毁;二级缓存在namespace发生增删改时清空。
17 mybatis三种执行器?——1简单执行SIMPLE,每次执行都创建断开连接;2预处理REUSE,连接不断开;3批量BATCH,批量执行sql,代码中的执行不会立即生效。
18 设计数据库相关。
19 oracle、mysql区别——分页、单引号双引号、函数、提交、默认隔离等级。
20 sql优化——表顺序、关联条件索引、模糊查询、不用*、or和in换成union。
21 oracle的from子句从右到左执行,数量少的基准表应在右侧。10g之后自动优化表顺序。