大学中读了一个非计算机专业,就业之后发现程序员收入高,很多人勇敢的选择了转行,我们公司不对应聘者的大学专业有要求,基本上大专以上学历,工作三年经验就可以通过hr 的简历筛选,我在最近的面试中遇到了两位有了三年经验的非计算机专业的程序员,他们能力都超过了应届毕业生,可以独立的完成简单的需求,例如:分页查询某类信息,条件搜索分页,简单的连表查询,但对于复杂的任务就有点力不从心的感觉,问道一些原理上的东西就会暴露出一些缺点。

一、转行的勇气

无论面试结果如何,我都对非计算机专业的程序员表示钦佩,我身边也有很多人高考分数很高,读了不错的学校,可惜选了环境工程、土木工程一些就业竞争压力比较大的行业,但很少有人有勇气或者行动去转行程序员,就如同我的一位学了土木结构的同学,凭自己的能力拿到了一级建造师,学习能力绝对优秀 本科普通211 考研到了头部985.
可惜竞争压力大,我羡慕他进了国企设计院,他羡慕我年轻赚到了钱。

他说自己的建筑专业的知识形成了系统,转行计算机很难,他反问我若是计算机专业过剩,土木稀缺,你会从头开始学习转行土木工程师吗?我思考一阵应该不会,即便是转行我也会转相近行业,或者学习门槛低的行业,计算机的学习门槛并不低,如果你只是为了年轻赚钱,会模仿同事的写法,写固定业务的代码,那么你到了35岁就会逐步被行业抛弃,如果你想把程序员作为终生职业,那么你就得活到老学到老。

二、转行的途径

2.1 通过培训班

培训班需要有自己的定力,付出时间和金钱,一般学校越好培训班的包装越好,可以找到不错的工作,接下来就靠运气,遇到好同事,自己虚心请教,在第一家公司站稳脚跟,逐步提升自己的能力。

2.2 考研计算机专业

这个途径最靠谱,也最受行业认可,计算机专业的研究深度超过了本科计算机,况且通过了考研专业课,计算机基础知识一般都没啥问题,公司并不是需要一个计算机专家,但是讨论技术问题的时候,需要专业背景知识,例如什么是线程安全,悲观锁、乐观锁。
特别是解决线上问题的时候,没人有时间普及基础知识。

2.3 边工作边学习

这条路最难,一切靠自己,最好有个共同学习的伙伴,自己善于学习,自己找到靠谱的教程
这里不推荐,免得有广告嫌疑。

不得不说,培训机构的教程一言难尽,如果从功能实现上,技巧是没啥大问题,但是很少触及原理,本质,理解不到本质解决问题就是容易云里雾里。抓不住重点。

三、两位3-5年的非计算机专业候选人面试记录

A: 211 大学非计算机专业,简历中出现了二线大厂,但是项目偏简单,基本上设计信息桥梁的作用,接近外包项目,没有复杂的业务逻辑,技术栈不够全面。

A 履历很好看,好学校,大厂经历,但是项目很一般,我看中了他的学校、大厂经验,给了面试机会,但面试下来却给我一个刚毕业的感觉,首选 计算机基础没有补齐,很多计算机专业术语不知道,这点影响同事之间的交流。技术沟通。

候选人所在的大厂号称XX 四大坑,加班多著名,但是候选人却没有加班,我们一般安排晚上电话面试,猜想也是大厂的清闲岗位,候选人说自己需要出差到客户方,基本上算是技术支持,简单的接口对接工作。

候选人项目基本上是单体,偏向工业互联网,物联网,没有互联网这种高并发,高可用,灵活上线的工作经历。

很可惜能力和经验不匹配。

B 统招本科 采矿工程 自学转行,3年经验

B的业务沟通很顺畅,能清楚表达出自己做的功能模块,实现的业务逻辑,清楚业务逻辑细节,可以确认项目是真实的,这时候他已经完成了转行,即使达不到我们公司的要求,他也会拿到其他公司的offer。

但是B 的项目逻辑不够复杂,一个单体应用、一个分布式项目。

由于此次招聘的岗位是P6 ,我们公司岗位定级对表阿里,但是基本上对后选人的要求低于阿里,实际上也就是阿里P5 的要求,能独立完成比较复杂的需求,例如一个计费模块,一个审核模块。

根据简历,我开始由浅入深,简历中写了

具有扎实的 Java编程基础,理解 IO、多线程等基础框架,对 JVM的 原理有一定的了解

每个人对扎实的定义不同,但写上扎实就是熟练的使用Java,我问了一个问题:

如果一个Java文件中写了四个class类 一个枚举,那么Java文件编译后有几个class 文件,候选人开始卡主了,最后猜对了答案,但是不知道原理。

这样的表现算不算扎实呢?

我又问,hashMap 的扩容过程,什么时候会触发扩容,扩容的步骤,结果候选人答出了负载因子0.75 的由来,泊松分布的一个极值。
参考资料:
https://blog.csdn.net/sl1202/article/details/108292693
我很欣喜,虽然答非所问了但是候选人确实看了源码。

一般答出这些就站在一定高度,我怀疑遇到了隐藏的高手,我接着引导 如果我初始化的时候hashMap的容量是18 ,那么第一次扩容后容量是多少?候选人算了几十秒说 容量一般是2的N次方,这个没问题,我又问为什么是2的N次方,回答:可以减少hash冲突,这里就有点偏题了,hashMap的hash 计算结果 和容量没有关系。

   static final int hash(Object key) {int h;return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}

hashMap 中获取Hash的代码,其中有将计算出的原始hash值的高16位特征混合到低16位,为了使得数组中分布更均匀。

参考资料:https://www.cnblogs.com/mxxct/p/13857097.html

我又问为啥容量一定是2的N次方,候选人答不出来。

这里我就开始怀疑候选人的计算机基础知识了。

我们组有一个经典问题,怎么获取到一个链表的倒数第三个节点,我有时候会问怎么判断一个链表是不是环,这个数据结构题目,大概只有百分之二十的人可以答出。

知道使用双节点遍历的几乎没遇到过。

接下来我又问了乐观锁、悲观锁,重入锁,候选人都没回答出。

这是我大概了解了候选人的阶段,大概是计算机1-2年经验,一般我们对于计算机专业可以给到P5 ,非计算机专业只要能回到到 计算机网络 三次握手、四次挥手、https 协议,cookie session 也足够,知道B+ 树,知道MySQL 回表,聚簇索引、非聚簇索引。知道数据库事务隔离级别。页给了

这时候我已经知道候选人无法达到能力要求,所以接下来我开始启发式的面试,希望多给候选人一些学习思路

我又问了
1.synchronized 锁的用法 考察 锁的对象,锁的是当前对象 还是 类对象,这时候候选人说了一个不专业的说法,很影响面试。
2.springBean的作用域,候选人都答出来了,但是不熟练,我又问了springBean 的名称可以重复吗,别名可以重复吗,类型可以重复吗?
3.spring怎么使用Bean ,回答使用autowire 注解,我说不用注解怎么拿到Bean 候选人表示不知道

以上三个问题 P6 是必须知道的,因为很多spring 项目启动的问题就是SpringBean的配置不对。

这时时间已经40多分钟了,我让候选人问了我几个问题,说了一个鼓励的话并且委婉告诉了候选人的面试结果。

希望他能找到一个适合自己的职位。

欢迎有想法的同行一起交流:QQ群:424506194

程序员面试系列(2)非计算机专业程序员相关推荐

  1. 程序员面试系列之Java单例模式的攻击与防御

    我写的程序员面试系列 Java面试系列-webapp文件夹和WebContent文件夹的区别? 程序员面试系列:Spring MVC能响应HTTP请求的原因? Java程序员面试系列-什么是Java ...

  2. 【程序员面试系列】手把手教你如何面试,你要的我都有(工作项目篇)

    作者:Dimple Solgan:当你的才华还无法撑起你的野心时候,那应该静下心来好好学习 前面两篇文章的总结,我们学会了面试前简历的准备.技术知识准备和算法题准备.不知道你是否看完了呢,如果没看完的 ...

  3. 读书笔记系列--《理解专业程序员》tips

    理解专业程序员,给您带来大师的tips *"什么东西是绿的,有轮子,而且长在房子的周围"?* *"猜不出来,答案呢"?* *"是草,轮子是我瞎说的&q ...

  4. java程序员面试需要注意什么_Java程序员面试时要注意的一些问题

    Java程序员面试的时候会面临各种五花八门的问题,你的第一反应.思维逻辑.思考方法,专业水平决定了企业对你的评价和你的薪资水准,但是除了专业以外还有一些你需要避免出现错误的注意事项,如果很好的避免了, ...

  5. python程序员面试宝典 陈屹_程序员面试宝典 - 总结

    1 类型转换 当执行算术运算时,操作数的类型如果不同,就会发生转换,数据类型一般朝着浮点精度高.长度更长的方向转换,整数型如果转换为signed不会丢失信息,就转换为signed,否则转换为unsig ...

  6. MySQL程序员面试笔试宝典pdf_数据库程序员面试笔试宝典

    前言 上篇 面试笔试经验技巧篇 第1章 求职经验分享2 1.1 踩别人没有踩过的坑,走别人没有走过的路2 1.2 一只小白成长为DBA的心路历程3 1.3 一个热衷于SQL优化的DBA成长经历3 第2 ...

  7. 【面试相关】非计算机专业如何1年内自学拿到算法offer

    本文总结自己学习计算机视觉的经历. 我就是非计算机专业的,在18-19年1年时间内自学拿到商汤实习offer,20年毕业加入思谋成为一名算法工程师.我想我应该很适合回答这个问题. 之前写过一个实习面经 ...

  8. 非计算机专业程序员考公务员,程序员VS公务员,你会怎么选?

    近年来,随着互联网行业的异军突起,程序员的薪资水平也随之水涨船高,一时间计算机行业成为各考生追捧的专业,甚至一些人辞了原本的工作参加计算机培训也要挤进计算机行业分一杯羹. 俗话说,物极必反,在经历了数 ...

  9. 程序员面试系列——有符号数的溢出

    请看这样一道题: #include <string.h> #include <stdio.h>int main(void) {signed char a[1000]={0};f ...

最新文章

  1. 弹簧压缩 时间 matlab,用matlab解决弹簧振子摆动与时间的关系
  2. matlab能控型模型,级倒立摆MATLAB仿真、能控能观性分析、数学模型、极点配置
  3. Js实现类似PHP中的in_array方法
  4. 电脑如何获得管理员权限
  5. 配置Mysql实现主从复制与读写分离
  6. 硬核干货!大学老师2019必备工作神器汇总(附下载链接)
  7. [SQL Server] Access和SQL Server的数据迁移
  8. windows批处理脚本bat命令解析【12】ECHO处于关闭状态
  9. Graphics2D绘制图片,线段、矩形、圆形
  10. .NET 开源项目概览
  11. STM32 之 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压和ADC校准
  12. 禁用计算机的声卡设备,电脑声音被禁用了怎么办
  13. win7系统mscomctl.ocx不能注册
  14. ChemOffice Suite 2018 18.1.2.18
  15. asp.net 输入框在chrome中无法关闭自动提示
  16. 2020保研夏令营回顾--清华网研院+清华深研院
  17. python在办公软件上的应用
  18. 实验室或各大办公场所值班自动生成小程序(python实现)
  19. 清除html宏病毒,怎么手动清除宏病毒
  20. TensorFlow2 入门指南 | 04 分类问题实战之手写数字识别

热门文章

  1. 查询表空间建立表空间和删除表空间
  2. win8计算机配置管理模板,win8.1用户帐户配置管理图文详解
  3. 文本表示(一)—— word2vec(skip-gram CBOW) glove, transformer, BERT
  4. R语言的饼图 Pie Chart
  5. BIM建模助手上线一周,有哪些BUG被用户找到?
  6. 数字计算机模拟人脑,人造突触问世计算机模拟人脑不是梦
  7. 信号内插(零阶保持滤波器+插零)
  8. 转 | 芯片封装SOIC DIP MSOP DFN LCC介绍
  9. JavaScript实现动态写入表格
  10. 《魔兽世界》国服团队正与新合作方洽谈;爆苹果将允许第三方应用商店替代 App Store;Vite 4.0发布|极客头条