一面和二面技术面试回顾:
1. spring 原理,和spring mvc 上下文关系 ? 父子上下文怎么配置aop 生效;
spring beanFactory容器,读取bean定义,加载bean注册信息,反射 生成 代理,进行装配。
AOP 原理就是jdk动态代理,Cglib 动态代理,有超类使用JDK代理,如service,dao ,无则使用 Cglib代理,如一般的compenenet
spring 初始化上下文applicationContext,为根上下文,mvc 为dispacher 子上下文
,service 层想实现aop,必须配置在spring 配置 中,controller必须配置在mvc配置中。
2. redis 你们项目中 使用与那些场景? redis 底层原理?单线程是如何实现 串行化,如何抗高并发的?主从以及哨兵模式
缓存 ,简单队列,计数器,分布式锁。
redis 使用队列接受高并发client发送的消息,串行执行实现了单线程的安全问题。
高并发的 原理---不知道
主从和哨兵 简单说下服务端配置
3. mq 适用于哪些场景 ?linux 环境 常用命令,shell 脚本编写?
主要是异步任务或者是服务之间的 数据通信。提升系统性能以及体验,解耦系统之间调度 。
4. JVM 原理,垃圾回收机制的几种方式?调优经验?
年轻待,年老待,持久代,年轻代比例设置整个堆内存 3/8 . 垃圾回收的几种方式忘记了
5.nginx 基本配置,如何实现负载均衡,动静分离。
server 配置,静态资源 路径配置 ,location ,upstream
6.服务器优化,mysql 建表原则,sql 执行计划分析, sql优化,索引建立原则,20亿的数据量 id 查询和唯一索引查询哪个快?in 和exist 哪个快?
自行百度。感觉回答的不是很好。
7.dubbo hessian 等rpc 的实现原理,有几种序列化方式。
1. 服务消费方(client)调用以本地调用方式调用服务;
2. client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
3. client stub找到服务地址,并将消息发送到服务端;
4. server stub收到消息后进行解码;
5. server stub根据解码结果调用本地的服务;
6. 本地服务执行并将结果返回给server stub;
7. server stub将返回结果打包成消息并发送至消费方;
8. client stub接收到消息,并进行解码;
9. 服务消费方得到最终结果。
RPC的目标就是要2~8这些步骤都封装起来,让用户对这些细节透明。
dubbo 无非是增加了注册 中心,增加了对于服务的管理
hessian2,dubbo ,json,JDK自身序列化,soap,kryo,fst 等序列化方式。
传输协议有 rmi,dubbo,hessian,webservice,http.
8.springCloud微服务的理解,何以称为微服务?各个组件的解释,对比dubbo
从粗细上说出自己理解的 微服务。以及 cloud各个组件的作用,并且对比了dubbo 的 性能,并发性。tcp http的 区别
围绕我们项目,没有那么高的并发,选哪个无所谓 ,重点在意 易用性,稳定性。
9.工作中遇到的难题,举出俩个例子,包括你的解决 方案。
举出了通过aop自定义注解,实现编写mybaits 分表插件的功能。
利用redis 分布式锁(setnx +expire)解决了集群任务调度竞争且防止死锁的问题。
10.基础的问题 callable,runable区别,线程池怎么使用。hashMap 底层结构,LinkedList底层结构.
11 对zookeeper 是否熟悉。
使用阶段
12.对elaticSearch 的使用场景。
大数据分析,关键词海量检索。index, mapping 数据分片
后面就是问一些其他的,和技术关联不大。