面试其实是一个技术博弈的过程,又或是面对面的技术交流会,但又不像平时同事间的探讨而是为了相互了解,博得面试官的认可和信任。技术面可以以这几个问题开始思考:
- 1、这整个产品是怎样的,有哪些业务功能
- 2、这整个产品的技术架构是怎样的
- 3、你负责哪些业务功能、组件的开发
- 4、你在此期间经历的,碰到的最难的问题是哪个?(技术方面的),然后你是怎么解决的?
面试过这么多次,这几个问题面试官是必问的,面试前你心里得有个大概的答案,必要的时候可以写下来。
前三点你可以用作面试的自我介绍来进行阐述,例如:
自我介绍:您好,我叫xxx,本科毕业于东莞理工,来这之前去过两家公司,一家是我还在读大三的实习公司——趣云,一家是最近离职的青木,在第一家公司的时候我独立设计开发并维护公司的门户网站和参与深圳律师所的一个项目,在第二家公司我参与CRM项目重构,crm也叫客户关系管理,主要是处理我们代运营品牌方像HM、优衣库、博世、菲洛嘉这些大的品牌在他们天猫、京东、有赞店铺上的订单和用户粉丝,利用这些订单和用户做数据分析、打上标签、然后做一套数据分析、营销的工具。(技术)架构:三层微服务架构,底层使用java实现基础服务,负责一些核心的功能数据输出,中间层使用php实现业务层模块,负责业务逻辑处理,然后是前端输出。我主要负责内容中大部分CRM系统的B端和O端的业务层,包括o端运营端的开发、商家模块、优惠券模块,微信模块,参与过项目中nacos中间件的开发。
我面试的时候大概是这样介绍,与HR沟通的时候技术往后的内容可不阐述,大致自我发挥就好了,一般平和的与HR沟通讲清楚离职、期望就会进入到技术面。讲为什么从前公司离职这是必问的。
最难的技术问题你就得好好想想了,除非你在前公司真的没什么贡献就另当别论了,一般都会接触到一两个比较难的问题。
我遇到最难的(技术)问题:
关于服务发现的问题,前端调业务层,业务层调用基础服务,前端调用基础服务,通过consul获取可用服务列表后会将服务器ip端口等信息缓存起来,然后轮训http请求基础服务,这会出现两个问题:
1、当一个基础服务多台服务器发负载差别比较大,有些资源利用不高,有些资源负载很大的情况下,轮训的情况下很有可能请求到负载大的那台机,可能导致请求没及时响应
2、当基础服务在重启或更新的时候,一般是先启动新的代码服务,在关掉旧的代码服务,因为前端是缓存了请求服务地址,更新后可能导致请求到旧的代码服务,系统会短暂出现问题。
解决:暂没有好的解决方案,只能在出现异常错误的时候进行重试。不知道您这边有没有什么好的解决方案。
有些公司会问一个很刚的问题,就好像“我们凭什么选择你?你的强势在哪些方面?”
问到我的优势是什么,能力强体现在哪
有php微服务架构和项目的开发经验,学习阅读过swoole官方文档,对php异步io编程有初步的了解。