某银行开发岗面试
某银行
面试时间:
- 系统开发岗位:2021.10.13 15:00-15:30
- 中间件管理岗位:15:40-16:20
面试形式:多面试官单独面试
总体感受:中间件开发岗位设计中级工程师的技术,总体感觉良好,感觉能拿offer
系统开发岗
系统开发岗几乎没有问任何技术问题,以开放性的问题为主。总体感觉一般,但是面试官态度良好。
-
自我介绍
-
说一下里最满意的一个项目经历
着重体现:分析解决问题能力、沟通协调能力
这个问题被问过多次,但是一直没好的答案。我觉得一个好好的
- 有一定难度
- 自己是主导
- 成功落地的项目
被选项目
- Ant切Mavne:
- 需求:使用ANT进行构建,无法使用远程仓库,插件也很少。本地包无法托管在git
- 难点:项目一个有30万行的代码,有第三方包、部门包、自研包总计270个。需要全部翻译为pom文件,工作量巨大。
- 解决:
- 分析了maven仓库的查询和详情接口,做了批量查询功能
- 设计6个上下游部门,推动其Jar上公共仓库
- 成功在三级部门推广
- 项目性能优化:一二级缓存+门面模式
- 需求:系统产品搜索和加购物车较慢,需要优化
- 难点:产品展示和加购物车逻辑复杂,设计大量的产品表、部件表、价格表、权限表等
- 解决:
- 考虑在部分缺失缓存的逻辑添加基础数据缓存
- 缓存的key生成规则不统一,难以监控使用情况。和一级缓存api不同,开发混乱。
- 使用CacheProxy做门面模式,统一二级缓存的接口,key统一生成的规则,统一缓存时间
- 排查代码,在DAO根据业务逻辑,添加一二级缓存。不考虑一致性
- 通过缓存key,反查缓存时间,部分适当加长
- 引入主动更新机制MQ,主动刷新如黑名单等缓存,解决失效问题
- 添加规范日志,便于后期排查(找到了一次雪崩)
- 主动写日报专项跟踪,并且借助领导的力量
- 人民医院医生叫号:
- 需求:门诊叫好轮训数据库叫号表,性能压力大
- 难点:小需求,不过巧妙解决,使用MQ主动推动
-
平时如何学习新知识
技术上主要在工作学习,终身学习。想办法在工作中使用
工作知识可能偏窄,倾向沟通、项目经验等学习
-
怎么做sql优化
- 通过命令找出SQL:重点关注最慢的、调用次数最多的
- 优化
- 执行计划(关注索引、全表扫描、扫描函数)
-
多数据源是否有用到?怎么做数据同步
-
怎么对接客户,拿到清晰的需求
- 面对“说不清”的需求:使用原型法、写好需求说明书,相对的敏捷
- 面对“说太多”的需求:并且确认功能的优先级,确保功能满足要求
- 对于变更,要评审,记录
中间件开发岗
- 自我介绍
- 项目中接触过那些MQ,使用场景
- 项目中Redis的使用场景
- Redis为什么会比较快
- 基于内存实现
- 高效的数据结构:String、List、Hash、Set等都有优化
- 惰性释放、压缩类表、头尾节点、跳跃表等
- 一种数据类型,底层可能是多种的数据结构进行支撑
- 合适的线程模型
- 如果华为的中间件团队要招聘你,你会去吗?
但是不知道面试的的是中间件团队,所以回答了不去
传递:
1.认真对待自己的职业规划,中间件团队可能偏底层开发
2.不惧怕挑战,觉得可以胜任
-
SQL优化
-
Sql的索引机制
-
怎么看待领导分配的任务
- 抓住领导任务的重点,尽可能当面沟通
- 定期汇报工作,遇到困难及时反馈,上升
- 完美任务和deadline之前学会平衡
- 保姆型领导和撒手不管型领导
-
怎么看待加班
-
不惧怕加班,对工作有责任感。服从公司安排
-
长期加班反思自己的工作节奏
-
更加聚焦于自己工作产出的效率和质量、带来生产力的提升
-
-
福利和薪酬待遇等