离谱!学编程两年,还不会用工具类?

我已经在极力忍耐了,但实在是没忍住。。。

那天在面试一位候选人的时候,我还是笑了出来。

怎么回事呢?周二晚上我公开直播模拟面试的时候,来了一位经历 "有点独特" 的同学,暂且就叫他小 A 吧。小 A 才 26 届(刚大三),就有国赛和省赛奖项、2 段实习经历、简历上也写了 2 个项目。最关键的是,他竟然有 3 段培训经历!从高考结束开始,就分别参加过 Python、软件测试、Java Web 的培训,算下来至今已经学习编程两年半!

听起来是一位卷王了,学习时间久、自主性也挺强,直播间的朋友们和我一样,对小 A 接下来的表现充满期待!

小 A 的预期薪资是 12 ~ 15 K,看来也是自信满满,来势汹汹!

结果你猜怎么着?第一道题结束,他的薪资就直接腰斩,6 k 不能再多了!

额,准确地说,要不是模拟面试,估计这场面试到这里也就结束了。

为什么呢?我到底问了什么题?大家也可以来感受一下:

面试现场

鱼皮:你在开发 Java 项目中用过哪些集合类或者工具类?你在开发中是怎么提高开发效率的?

这道题目,其实只要你认真做过一些项目,应该都能说一点自己的想法吧?

结果小 A 答:我用 MyBatis、Spring Boot 啥的。

鱼皮:我理解你说的这些算是开发框架,当然非要说是工具也 ok。那你用过哪些工具类库呢?举个例子:你要把字符串的小写转为大写,你是自己写一个方法去转换,还是用什么现成的东西?

小 A 答:对于这种情况,我一般都是直接查教程。

我暗自心惊:还能这么回答?根本难不倒他!

其实问到这里,我基本上已经了解候选人的水平了,但想着可能小伙子面试经验不多,又有些紧张,我就再问得具体一点好了。

于是就有了下面这段对话:

直接把小 A 问懵了啊!

后面的面试过程也是类似的,有很多非常基础的内容,小 A 不但无法答出,甚至还不断爆梗!

比如:

1)鱼皮:你平时开发用过注解么?

小 A:用过,平时最多用的就是 ctrl 加一个杠的一个警字号的一个注解,还有 ctrl shift 的加杠的一个多行注解。

鱼皮(反应了一会儿):这不叫注解,这是注释啊!注释啊这是!

2)鱼皮:你是怎么注入 Bean 的?比如 Autowired 还有 Resource?

小 A:All to wear?刚才你说的那单词我没我没理解。。

3)鱼皮:平时应该写过 SQL 吧,写一句 SQL 来实现男生和女生的分组?

小 A:我还真没用到过

4)鱼皮:你做过订单相关的项目对吧?有了解过你们订单表的数据量么?

小 A:数据量还挺大的。。

鱼皮:挺大是多少?说一说你认为的 "挺大"

小 A:几千条左右?

我当时就这表情:

鱼皮:数据量挺大起码也得单表百万、千万条数据吧?

没想到小 A 突然提高了音量:百万他不让我做,百万咋可能让我做?!

真实。

问到后面,小 A 直接摊牌:"简历上的技能部分我不知道怎么写,直接从网上粘一下。"

我的建议

面试经过大概就是这样,直播间观看这场面试的朋友们甚至怀疑:鱼皮你在哪里请来的演员?

正在阅读这篇文章的你,或许也会觉得不可思议,学了两年半,怎么连工具类都不会用?连分组的 SQL 都不会写呢?

但其实我接触过这么多学编程的同学,回答过数万条向我的提问,我很清楚, 这并不是偶然 。真的有很多同学像小 A 一样,或许受限于学校的应试教育、或者受坑于某些不专业的培训机构、又或者因为不确定自己的学习方向辗转反侧反复横跳地学习,就会导致看似学习时间挺长,其实水平可能还不如学了半年的同学。

给大家分享这位同学的经历,也是希望借此给所有自学编程的同学一些建议,不要让你的 "两年半" 变成这样。

  1. 提前确认要学习的方向,越早明确一个方向越好,走直路比走弯路能够更快达到终点。

  2. 在选择一个方向后,先利用网上的资源自主学习,不要急着去报培训机构,降低你的试错成本。比如我在编程导航写过的 免费编程学习路线 ,先快速过一遍,也就有一个学习的全局感了,更好把握时间进度。

  3. 学编程的过程中,多记录自己学到的知识和技巧,积累自己的笔记库,没事就看一看,这样你写过的代码、用过的类库印象都会更深刻,就不会出现 "一问三不知" 的情况。

  4. 除了看系统化的教程学习外,平时没事就多阅读一些技术文章、或者提前看看你学过的知识对应的面试题,能学到很多教程之外的小知识点。像我带团队开发的 面试鸭刷题工具,也能帮大家多利用碎片化的时间自学。

当然,我还是非常看好小 A 的,表达能力很不错、心态也很好,而且现在才大三,之后有了明确的学习路线和方向,相信也能高速进步~

最后,再列举一些几个我认为初级后端程序员必须要掌握的知识技能,如果目前还不了解这些,就要尽快去补充咯!

初级后端程序员必备知识技能

这里我对初级程序员的定义是 ------ 至少能干活。大家可以把下面的技能当做自测表,看看这些你都会么?

我对知识点进行了分类,便于大家阅读~

1、基础编程能力

  1. 你是否能够熟练使用至少一种后端编程语言(如 Java、Python、JavaScript、Go 等)?

  2. 你是否了解基本的数据结构和算法(如数组、链表、哈希表、排序算法、队列、栈)?

  3. 你是否会进行代码调试和使用断点排查问题?

2、开发工具和环境

  1. 你是否熟悉代码版本管理工具(如 Git)及基本操作(分支、合并、解决冲突)?

  2. 你能否自主搭建一个简单的新项目(比如 Spring Boot 项目)?

  3. 你是否熟悉常用开发工具(如 IntelliJ IDEA、Postman、JMeter 等)?

3、后端开发核心知识

  1. 你是否清楚用户登录的完整流程,尤其是 Session 与 Cookie 的概念?

  2. 你是否了解 HTTP 的基本概念,包括 GET、POST 等方法的区别和用途?

  3. 你是否能够设计并实现增删改查(CRUD)功能?

  4. 你是否熟悉数据库操作,包括 SQL 查询(联表查询和分组)、事务等基本概念?

  5. 你是否了解数据库表的基本设计原则(如字段命名规范、索引、逻辑删除等)?

  6. 你是否知道如何防范常见安全问题(如 SQL 注入、XSS)?

4、前后端交互

  1. 你是否了解前后端交互的基本流程(如 HTTP 请求和响应、状态码)?

  2. 你是否了解常用的数据传输格式(如 JSON)并能处理这些格式的请求和响应?

  3. 你是否知道如何防范常见安全问题(如 SQL 注入、XSS)?

  4. 你是否知道如何使用工具(如 Postman、Curl、或者其他国产软件)来调试接口?

5、日志与调试

  1. 你是否了解开发中应该要写日志(如 log4j、SLF4J 的使用),并能通过日志排查问题?

  2. 你是否能捕获异常并处理错误情况,避免程序崩溃?

6、项目配置与部署

  1. 你是否能配置基本的服务器运行环境(如 Nginx、Tomcat)?

  2. 你是否熟悉常见的打包和构建工具(比如 Maven、Gradle)?

  3. 你是否知道如何部署一个单体项目到服务器(如云服务器、本地 Docker 部署或者可视化面板)?


这些知识大家都掌握了么?还有什么你认为对后端程序员来说非常重要的核心技能呢?欢迎评论区留言补充~

更多编程学习资源

相关推荐
waicsdn_haha9 分钟前
MySql-9.1.0安装详细教程(保姆级)
java·数据库·后端·mysql·php·性能测试·数据库开发
只会写bug的靓仔19 分钟前
无管理员权限 LCU auth-token、port 获取(全网首发 go)
开发语言·后端·golang
我们的五年31 分钟前
【Linux课程学习】:第二十一弹---深入理解信号(中断,信号,kill,abort,raise,larm函数)
linux·服务器·后端·深度学习·ubuntu·机器学习
愿时间能学会宽恕1 小时前
SpringBoot后端开发常用工具详细介绍——Minio资源管理器
java·spring boot·后端
一只淡水鱼661 小时前
【Spring】Controller层常用注解的介绍和使用
java·后端·spring
北辰浮光2 小时前
[maven]使用spring
java·后端·spring
凡人的AI工具箱2 小时前
每天40分玩转Django:Django认证系统
开发语言·数据库·后端·python·django
HUNAG-DA-PAO3 小时前
深入了解Spring
java·后端·spring
凯歌_掘金3 小时前
java并发编程中Monitor里的waitSet和EntryList都是做什么的,两者之间的区别,你可以说出来吗?
后端