面试技巧
自我介绍
1、基本情况:姓名、年龄、专业、学历 2、最近一段时间的工作经验,最熟悉的项目;当前项目价值,用到的技术体系,项目中承担的主要职责,主要解决的项目问题 3、面试这家公司的行业调查 4、跟面试官说介绍结束
你好,我是杨锐标,今年29岁,本科计算机科学与技术专业。最近一家公司是超盟科技,在公司里面主要是负责短途物流配送的项目,项目考虑从受众程度和开发效率考虑,所以用springcloud搭建的微服务架构, 然后业务需求上用的是springmvc,springSecuriy,mybatis等系列的框架,在一下场景下使用redis、rabbitmq处理一些异步、排队、通知的设计; 以及是用websocket搭建的实时消息服务,运行部署则是通过docker的容器进行服务的部署。项目中主要是订单相关的服务以及消息推送这一块的开发,有解决过服务宕机,服务缓慢的问题; im项目遇到消息队列的问题,导致消息丢失;接口耗时过长问题;后台服务时不时宕机;
推送im服务怎么做的
- im服务使用的技术是sockjs,整个服务有预处理消息的MQ服务和路由发送消息的push服务组成
- push服务主要解决的问题
- 1、保持检测客户端的在线状态以及推送消息的准确送达
- 2、多实例环境下进行message推送时怎么路由消息到客户端连接的实例
- MQ服务主要解决的问题
- 1、接收业务服务的消息推送请求
- 2、群发消息的处理
项目中遇到的问题,怎么解决的
- 1、骑手抢单,骑手反馈重复抢单的问题
- 并发处理问题,通过分布式锁解决
- 2、推送服务出现推送不及时问题
- 在推送添加协议,心跳检测、消息ack
- 3、订单流程过于复杂,关联的业务太多
- 重写逻辑,主流程独立,其他关联操作通过发布订阅或者MQ消息队列异步执行,对一致性要求高的,通过延迟定时检查处理
- 4、xxl-job需要开放多个端口的问题
- 自己重写服务的操作接口
- 5、jvm宕机
- 内部类导致oom
用redis做什么
- 1、使用redis为接口做缓存
- 2、token的存储
- 3、数据排名
- 4、地图geo操作
- 5、分布式锁
- 6、使用发布订阅订单状态的同步
用rabbitMQ做什么
- 1、订单下单解耦
- 2、延迟队列
- 3、订单回调
说一下项目中的问题
- 开发实施消息服务的时候,websocket出现消息偶尔丢失。websocket协议的不稳定,在原来的消息协议上在套一层,添加消息确认
- 接口耗时过长:接口涉及多张大表,数据更新频繁导致缓存命中率低。针对接口维护一张视图表
- xxl-job框架改造
- 后台服务时不时宕机:在做其他项目调用请求的时候,会出现连接不释放问题,导致资源耗尽。
- jvisualVM监控、dump出来后,jhat可以看
项目陈述
1、不要说所有项目,重点说一个两个项目 2、表述项目需要逻辑性和条理性–总分总
- 表述项目价值,介绍功能
- 参与的技术模块,项目的技能栈,可以自带纸笔
- 项目中存在的问题,以及解决方案 3、问QPS
- 先讲配置,原来多少优化后多少
- 优化思路:把磁盘io换成内存io、把内存计算换成cpu计算、添加中间状态
问到自己会的问题
1、先说这个问题总结,一般是意义、场景、用途 2、复杂的按1、2、3、4、5来,简单的就直接说
问到自己不会的
1、有一点了解的,可以说你了解的或者相关的 2、完全没听过,直接说不会但是说我可以说学习,然后说公司的项目是不是用,请教下
谈薪资
1、对自己有所认知 2、期望20k,比心理预期高 3、hr问心里最低薪水,反问公司能给的薪水 4、不要痛快接受,去夸奖公司,hr的能力
谈缺点
1、执着、完美、代码洁癖
谈职业规划
1、不说长远规划,但有终极目标,架构师、创业、CTO 2、说1-3年的计划,如果有幸入职公司的话,那我我会从本职工作做起,挣取让自己先做到中级开发、高级开发、项目经理 3、相信在公司有更好的发展和更高的成就,同时能带来价值。如果有幸入职,公司是怎么安排的
回答有什么想问的
1、hr:问福利、工作时间、晋升等 2、技术面
- 不要问福利
- 问内部技术培训、有没有技术分享、问公司技术栈
- 技术团队规模
- 入职安排
说离职原因
- 公司倒闭
- 不发工资,仲裁
- 没新项目
开放性问题
- 让面试官感兴趣,关注面试官反应
- 人员、资源、风险、优先级