阅读本文你的收获:
- 学会提炼和总结项目经验,更好体现自己价值,从而冲击高薪
- 学会在面试时介绍项目经验的基本流程,规避一些坑点,提高面试成功率
上次我分享了面试中如何进行自我介绍的一个方法:面试中用FABG法则成功推销自己,那么介绍完自己之后,接下来就进入技术面试的正题了——介绍项目。
一. 项目介绍时存在哪些问题?
在之前的企业中,我作为技术主管、PM,参与过很多技术面试,我们在衡量一个面试候选人的时候当然会根据岗位的技术要求、能力要求来做判断。其实简历上的适当“包装”大家都心照不宣,有些人简历上写了四、五年,号称是中高级的工程师,但是通过实际交流,却发现其表现根本没有充分体现出四五年经验,很难让人信服。他们的介绍主要存在以下的问题:
(1)无法从业务上打动面试官。介绍的项目内容过少且不深入,例如介绍业务功能主要以增删改查为主,说的时间也很短。
(2)无法从技术上打动面试官。项目介绍不全面,只是介绍业务功能,缺少流行框架或者技术亮点的介绍,根本不能让面试官全面的了解到面试者会什么。
(3)无法从项目经验上打动面试官。具体技术点是如何应用到项目中的说不清楚。技术背景不可信。
那么如何规避以上的这些问题呢?
我们说“成功靠设计”,不管你的经验是否完全真实,还是有一定的“包装”,都是需要好好进行设计的。
二. 面试前的梳理和准备
面试前,建议用Xmind等思维导图工具,做一个深入的思考和梳理。
2.1 梳理项目的开发背景、亮点功能、业务流程
- 是承接的客户项目,还是自家的产品?
- 是toB的项目还是toC的项目?
- 项目是哪一类的,如MES/WMS/ERP/BIM/HIS/OA或金融或是其他?
- 项目是从0到1新开发的,还是对已有项目的升级改造?
- 如果是新产品那么她与竞品比较,有什么亮点的功能?
- 如果是升级改造,那么她与旧版本相比改进优化了什么?
- 重点的、复杂的功能模块有哪一些?
- 自己负责开发的业务模块及业务流程是什么?
2.2 梳理项目的亮点技术
- 采用的是微服务架构?还是普通多层架构?
- 是否采用前、后端分离架构,前、后端分别用到的技术栈是?(Vue、WPF、ASP.NET Core等)
- 整体架构中用到的设计模式和开发思想有哪些?如分层设计思想、DDD、AOP等,梳理出一些能体现你架构思维、架构经验的点。
- 是否采用了成熟框架和工具链,如.NET里面的ABP框架?成熟框架毕竟市场接受度高。
- 使用的相关提薪技术点,并能列出这些技术点用在哪个场景中,具体解决了什么业务需求?比如 Logo4net(Nlog)、Autofac、 AutoMapper、 Dapper、 跨域、 JWT(OAuth2.0,IdentityServer4)、 JSON序列化 、QuartZ定时任务、 Redis缓存、 RabbitMQ队列、 SQL优化、接口优化技术等。
2.3 围绕梳理的亮点技术,准备一些常见的面试题
- 基础面试问题,例如
- 依赖注入
- 控制反转
- 中间件
- 泛型、反射
- 委托、Lamda
- 代理,回调
- LINQ
- 事务,索引,存储过程
- 异步,多线程
- 设计模式
注意:依赖注入,控制反转,中间件是.NET基础问题必须答对。异步、事务、索引、多线程,设计模式是高频问题,必须认真应对
- 提薪面试问题。提薪技术点相关问题必须准备好,要做好被面试官深入询问的准备,了解原理。
- Vue框架::Vue的MVVM双向绑定原理,Vuex,路由,计算属性,插槽,传值等
- WPF框架:以依赖属性,界面布局控件,MVVM绑定,路由事件、Prism框架为主。
- ABP框架:分层介绍、领域事件、领域服务、DDD充血模型、模块化、多租户、本地化等
- Autofac:反射+工厂实现的IOC容器
- AutoMapper:通过表达式树Api 实现的对象映射工具
- Dapper:通过Emit增强反射实现的轻量级ORM
- JWT:怎么组成的?如何加密的?如何解析的?如何携带的信息?有哪些安全问题等
- Json序列化、反序列化:NewtonSoft.Json、 LINQ to JSON技术等。
- HttpClient接口调用:如何传参、接收返回值、如何进行token验证等
- QuartZ定时任务:两种触发器模式、任务监听、CRON、job持久化等
- SignalR实时通讯:底层的四种通讯模型、与WebSocket的区别,通讯安全怎么考虑等
- 冲击高薪的技术问题
- 涉及高并发,高可用,以Redis(MemoryCache),RabbitMQ , 分库分表、性能优化为核心进行准备。
- 项目如何实施和部署,例如部署到Linux上,这里主要的技术点是Linux,Docker,K8s等
- 软实力的问题
- 项目管理PM之类的知识:在团队开发中遇到的管理问题,及如何用管理能力解决的。
- 沟通能力:如何与客户沟通、与横向部门沟通、与同事沟通等;
三. 面试时的项目介绍流程
1)介绍业务:业务复杂度要够复杂,要体现业务流程的成熟度,这样可以增加项目经验的可信度,项目经验可信是对高薪强有力的支持。
2)框架介绍:对开发项目用到的框架要详细介绍,框架要在企业中认可度高,要保证成熟度高,高可维护性,高可易用性等,例如基于DDD设计思想的ABP框架,使用ABP框架说明业务层具有很高的“弹性”,从而降低后期维护成本。其他加分项还有例如Vue,WPF等。一专多能的人才谁不想要啊
3)技术及应用场景介绍:接下来要体现开发项目的复杂程度高,因为高复杂度所以要用到,例如JWT(OAuth2.0,IdentityServer4),Autofac,AutoMapper,Aop,Logo4net(Nlog),Dapper ,跨域,Swagger ,Quartz ,SignalR,第三方接口集成等亮点技术。
4)数据量,并发量介绍:接下来体现项目的高并发和高可用,主要为了体现用的人多,面对的环境复杂度高,涉及的技术点主要用到分布式缓存Redis、 消息队列RabbitMQ 、分库分表、SQL优化、接口优化等。
5)最后说一下部署,这里主要的技术点是Linux,Docker,Nginx,Jenkins实现CI/CD等
要知道,面试就是一个全面展示自己才华和经验的关键时刻,必须做好万全的准备,以上主要是针对在.NET工程师的求职面试中的项目介绍流程进行了总结和分享。本次分享就这么多,希望对你高薪面试有所助益。欢迎点赞+评论+关注。