作为一个研发背景出身的项目经理写给IT面试者的几点建议

一、绪论

今年疫情影响,不管大、小厂,都面临着裁员;有甚者HR借此机会正好来一轮人员优化,以我所经历的公司来看,要么末尾淘汰制、要么暴力裁员;前者还好跟HR软磨硬泡还可以争取N+1的赔偿,后者直接让其在团队中孤立起来,最后让你自离;优化最后人数正好符合部门需求,不多也不少。那这里就会带来一个风险,如果其中现有人员力有一人存在离职的想法?那就的开始补录人选了。不巧团队正好遇到类似的情况,而我作为面试官,把遇到的几类问题跟大家分享下:

二、应试者跳槽频繁

HR发过来的几份简历来看,基本上一份工作不满,直接不用考虑,即使他再优秀,当然这里并不是说绝对。但作为一个项目管理者来看,尤其是大项目或者业务逻辑复杂度相对较高的,最不愿意看到的项目人招录进来之后,开发Leader给他介绍完了相关技术栈并培养、产品介绍了相关业务逻辑,带了不到半年结果走了。这其中带了的损失是不可估量的。上一家公司待的久,可以说明以下几点:

  1. 员工的忠诚度较高,认可公司价值,当然也认可团队管理,这种人招录之后易于融入团队,对于管理者来讲更便于管理;
  2. 家庭生活相对稳定,这么怎么讲?有人讲这个理由可能有点牵强,其实不然,一人的生活相对稳定,那么对他工作来讲负面影响较小,这样他才可以安心工作,努力赚钱养家糊口;
  3. 技术背景相对比较扎实,换而言之如果要熟悉一家公司所有的技术栈没有一两年的时间是了解不够全面的。

三、只熟悉框架名称,而不了解全面

大多数的面试或写熟练接触ssm/ssh,有过实际项目经验。如果你要细致了解,什么是ssm时?或者过滤器、拦截器优先级?工程里主要的结构时却一知半解,下面给大家主要介绍下面试官容易问道的几个问题:

  1. SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
  2. 过滤器(Filter)它依赖于servlet容器。在实现上,基于函数回调,它可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。我们在配置web.xml时,总会配置下面一段设置字符编码,不然会导致乱码问题,常见配置如下:
<filter>
    <filter-name>encoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encoding</filter-name>
    <servlet-name>/*</servlet-name>
</filter-mapping>

拦截器(Interceptor)它依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。如果我们要实现一个用户登录后才能接收相关信息,这个时候我们就要用到拦截器,通过校验请求头中的token信息返回true/false.
3. 缓存技术也是比较常见的,从过去的memcache到现在主流的redis。这里只要回答面试管,为什么使用缓存,什么场景下使用缓存,基本上对于初中级开发来讲足够了,对于用途这块除了放不经常改变的数据但使用频率比较高外,你可以回答,类似验证码生产序列号都可以使用redis缓存技术。而对于高级来讲涉及到缓存的灾备如果防止雪崩。
4. mybatis中mapper文件中resultMapresultType的区别。其实两者区别不大,主要看使用场景,都是返回对象信息 ,但是resultMap要更强大一些 ,可自定义。因为resultMap要配置一下,表和类的一一对应关系,所以说就算你的字段名和你的实体类的属性名不一样也没关系,都会给你映射出来,项目中推荐使用resultMap。
5. mybatis中mapper文件中对sql片段不太了解,甚至不知道如何去定义sql片段,sql主要是以sql关键字作为xml节点。通常会把表列名、where查询条件作为sql片段,主要是为了统一管理,方便重复引用。
6.mapper文件中面试官可能提到#{}与${}的区别,前者占位符可以有效防止sql注入,使用时不需要关注参数的类型,mybatis会自动进行java类型和jdbc类型的转换;后者通过可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,使用后者不能防止sql注入
7. 定时作业任务用到那些中间件,这里通常回答quartzelastic-job基本上就可以了,如果要比较两者差异,可以深入了解下分布式定时作业任务。
8. 消息中间件用到那些?回答ActiveMQRabbitMQKafka基本上初中级开发基本够用了,如果想面试高级只需要列举各自差异就可以了。
9. 分布式配置管理平台,偏向运维方面,可以大致讲下目前项目所用的第三方工具,例如disconfapollo,主要给面试官讲下为什么应用,优点在哪里。
10. 平台权限管理用到哪方面的技术,目前比较主流以shiro为主,基本上回答将shiro+redis实现一个分布式服务共享存储用户session信息差不多就可以了。
11. 服务注册中心接触那些,目前市面比较主流ZooKeeperEureka大概讲下什么场景会应用到即可,通常因为时间问题面试官不会深入去挖掘。

三、项目过程中缺少SQL调优

这个问题也是应试者最容易忽视的一个问题,作为服务端的开发者任务SQL调优是DBA做的事情,其实不然。目前市面上很多监控工具就可以分析出项目运行过程中SQL比较耗时的SQL语句,当然这些语句梳理出来之后,要求开发如何进行调优?以MYSQL为例,这个时候应试者只要回答,充分利用explan关键词,查看sql语句执行计划。当然这里要注意一点EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划。

四、关于前端框架

这个问题对于做服务端的开发者来讲,这块领域相对比较薄弱。建议面试者在面试前对公司背景先做一定了解?如果面试企业所需要的IT团队是服务企业管理本身所做的信息化建设,那么可以直接告诉你,IT团队里没有对前后端的工作界定的非常清楚,换句话来说,IT部分可能没有专职前端开发人员,需要服务端人员了解一定的前端框架。毕竟做后台管理系统,不需要很酷炫的效果,只要UI还看的过去,一般架构组不会花太多精力去弄表面的东西,更多的是将精力花在系统的性能方面建设。架构组也不会招聘一个很牛B的前端开发人员,对管理者来讲够用就好。所以服务端面试者在回答时,一定要说了解过,例如:easyui、bootstrap、vue、angular、react。毕竟这些框架后期上手还是比较快的,部分组件也是有专人封装好的。

五、关于团建方面

一般问到这个问题,说明前面的技术面试基本OK了,主要看你后期是否能够融入一个新的团队。这个时候提这个问题基本上是PM或总监级人物,对于这个级别的人来讲,招一个技术大咖很简单,无外乎花点钱嘛,但是如果招聘一个性格很古怪又很难融入团队的人,对于主管或总监来讲不希望在身边留下一个刺头,毕竟迟早是个隐患。这个时候你只要回答,一般没有特殊情况都会参加,尤其喜欢XX运动,例如爬山、野外、打篮球、聚餐、唱歌都OK。

六、关于爱好或工作之余的安排

这个问题通常是面试官为了试探应试者,性格方面是否积极向上。如果应试者回答平时没啥爱好,喜欢宅在家里,那几乎完蛋了,一般问这个问题,实际上也是面试官为了找一个和自己兴趣相投的人。所以我们总会容易看到一个现象,基本上在一块抽烟或喝酒的,很少发生争持。这个时候只要回答一些健康积极向上的爱好,例如:打篮球、跑步、看电影、看书都可以,既体现了自己爱生活、身体素质好,也体现了自己爱学习有上进心。

上述讲了这几天遇到的经历分享所得,如果对你没帮助,可忽略。

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值