后端工程师 - Java 12-15K·13薪 30人左右 后端两个人
电话面试 30分钟
岗位职责:
1.按照业务需求完成系统的开发,自测,上线;
2.负责对所开发系统不断优化,确保核心技术指标不断改善;
3.负责提升系统的用户体验,对性能、稳定性等不懈追求。
基本要求:
1.1 -3 年以上Java及WEB应用系统设计开发经验,具备良好的代码能力以及编程规范;
2.精通Java,多线程编程,消息系统,数据库,分布式应用等技术,了解SOA框架的使用;
3.熟悉Spring、Spring Boot、 Redis、MyBatis、Hibernate等常用框架和类库 ;
4.做事积极主动,沟通能力强,对工作认真负责,有较强责任心和事业心,具有良好的计划和创新的能力;
5.有中大型系统研发经验优先;有高性能、高可用性系统设计、研发、优化经验尤佳。
面试问题:
- Spring Beanfactory Factorybean区别
Beanfactory是Ioc的核心接口,用来对bean对象的创建、配置和管理
Factorybean是一个特殊的Bean,一种扩展机制,用于创建复杂的bean对象并且允许在bean创建过程中执行自定义的逻辑
- spring 循环依赖怎么处理
Spring通过三级缓存解决了循环依赖
一级缓存为单例池(singletonObjects),
二级缓存为早期曝光对象earlySingletonObjects,
三级缓存为早期曝光对象工厂(singletonFactories)
当A的bean需要B的bean的时候,提前将A的bean放在缓存中(实际是将A的ObjectFactory放到三级缓存),然后再去创建B的bean,但是B的bean也需要A的bean,那么这个时候就去缓存中拿A的bean,B的bean创建完毕后,再回来继续创建A的bean,最终完成循环依赖的解决。Spring 利用 三级缓存 巧妙地将出现 循环依赖 时的 AOP 操作 提前到了 属性注入 之前(通过第三级缓存实现的),解决了循环依赖问题
- kafka 数据是存在哪的
分区日志文件
-
库存超卖
-
redis数据类型以及使用
string list set zset hash
- redis持久化机制
rdb aof
- 分布式锁setnx 怎么保证原子性
redis是单线程操作
- redis lua怎么保证原子性
Redis通过eval、evalsha等命令来执行Lua脚本
Redis采用了单线程执行模型,当Redis执行Lua脚本时,Redis会把Lua脚本作为一个整体并把它当作一个任务加入到一个队列中,然后单线程按照队列的顺序依次执行这些任务,在执行过程中Lua脚本是不会被其他命令或请求打断,因此可以保证每个任务的执行都是原子性的
- redis和数据库怎么保证数据一致性
比较好的方法
1.先删缓存 写数据库 再删缓存
2.先删缓存 写数据库 休眠500毫秒 再删缓存(延时双删)
3.先写数据库 再删缓存
4.先写数据库 通过binlog异步更新缓存
参考 zhuanlan.zhihu.com/p/661531827
- redis集群有哪些
一、主从
适合单体架构项目二、哨兵
适合单体架构项目,主机宕机需要手动切换主服务器,不方便水平扩容,每个节点存储的数据一样三、redis cluster集群
适合分布式架构,完全去中心化没有中心节点,hash槽分配方式,方便水平扩容,每个节点存储的数据不一样
Redis Cluster 是 Redis 官方提供的分布式解决方案,它将数据划分为多个槽(slot),每个槽可以分布在集群中的不同节点上。Redis Cluster 提供了自动的数据分片、故障转移、集群扩展等功能,对外呈现为一个统一的 Redis 服务,客户端无需关心数据存储在哪个节点上,由集群自行负责数据的路由和管理。
- redis 大key会造成什么问题
内存占用过大
影响持久化
非阻塞IO分块传输?
- 跳跃表原理
对有序单链表 采用二分查找的思想
- 数据库分表有哪些逻辑
水平分表 按照某种范围(比如时间、ID、hash算法等)进行拆分
垂直分表 减少表冗余字段
- 数据库优化
索引优化 explain 然后观察key key_len rows等字段观察索引情况
-
什么情况会导致不走索引
-
like %为啥放左边为啥不走索引
和 B+Tree 有关系,索引树从左到右都是有顺序的。对于索引中的关键字进行对比的时候,一定是从左往右依次对比,且不可跳过。
- 怎么解决死锁
设置过期时间,避免进程永远的占有锁
产生死锁的四个必要条件:
- 互斥条件:一个资源每次只能被一个进程使用。
- 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
- 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
- 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
-
注册中心还了解哪些
-
平时会学习什么以外的知识
-
maven冲突是怎么解决的
-
线程不安全是指什么
指的是多线程情况下,导致共享资源出现不确定性的操作结果
- 平时用过哪些设计模式
redis脑裂问题