这是一篇缓解面试焦虑的文章。
背景
有读者给我留言:大四的学生如何求一份Java的工作?并且还特别强调了他非科班和文凭不出众的事实背景。我想这个问题具有代表性,所以写一些个人的建议,希望能帮到一些人。
定位
要想求得一份工作,首先需要对自己做好一个定位。
考虑到那些好学校出身的同学们,他们在毕业前一年可能就参加过小招了,而普通学校的同学说实话校招的机会很少,所以在毕业前夕还在担忧工作问题的同学,不妨先思考一下自己的定位。
公司招聘一个新员工时,有 2 个很重要的指标:
- 潜力
- 即战力
面试的时候,想一想你的简历和你的谈吐中要如何体现上面的两点。
潜力
先说潜力。
潜力指一个人未来能达到的状态高低。
说一个人潜力大,无非是说当前还好,但未来会表现的非常优秀。
什么样的人算潜力大呢?
头脑灵活、基本功扎实、学习成绩非常优秀。
头脑灵活代表你遇到问题时,能够很快想到对策。
基本功扎实代表你工作会让人放心。
学习成绩优秀代表你过往的综合表现,是对你学习能力的认证。
如果你觉得你当前一样都不占的话,可以考虑一下即战力。
即战力
即战力代表你能够马上投入工作和生产当中。
一般员工入职都会有试用期,主要就是考察你能不能适应团队。
有些人面试时状态很好,但是实际工作当中就是找不到门道,即使最后没有通过考核,公司为此也要支付用人成本的。
如果,你在面试时能展现出你的即战力,你就有很大的概率通过面试。
潜力和即战力都很重要,优秀的人两者兼备。
如果只能做到一点,我认为提高即战力在面试时更实在。
举措
求职面试不能懵懵懂懂,没有灵魂。
我大四的时候参加培训班,浑浑噩噩学习 4 个月后就被赶鸭子上架去面试。通常老师逮着机会就让你面试,通常几十个人一起面,企业如何从来没有想过,只想着能求得一份 offer 就好。
现在回想过来,如果当时好好计划、好好准备,结果会更好。
所以,本节的重点是计划和准备。
初中时候,做的试卷都是老师手写然后复印的,总记得上面的一个词:夯实基础。
技术人员的核心还是基本功。
基本功
基本功包括基础的语法、基础的数据结构、典型的算法、基础的计算机网络基础、基础的计算机原理。
基础语法
- 变量
- 关键字
- if/else/while/for/switch
- 基础的IO操作
- Socket 操作
基础的数据结构及算法
- 时间复杂度
- 空间复杂度
- 链表
- 栈
- 队列
- 二叉树
- 图
- 递归算法
- 图的广度优先遍历
- 图的深度优先遍历
刷题
把基础的知识学会后,要通过刷题要检验和巩固。
题目可以是刷题网站的题目,也可以是现场面试的题目。
可以制作一张核对单,把每一个你认为要掌握的知识点记录下来,进行核实。
- 递归算法
- 单例算法模型
- 动态规划
- SQL 基本操作
多做题,多面试,确保这张核对单的选项通过的越来越多。
高级
掌握基础能力的情况下,可以去学习一些更高阶的知识。
多线程开发
- 线程的实现,Thread 和 Runnable
- 线程的阻塞与唤醒
- 线程的同步,Synchronized 关键字和方法
- 生产者-消费者模型
设计模式及原则
- 单例模型
- 工厂模式
- 构造者模型
- 观察者模型
- 组合模式
- 适配器模式
- 单一职责
- 里氏替换原则
- 依赖倒置原则
- 借口隔离原则
- 迪米特法原则
- 开闭原则
框架
上面讲的都是基础概念和高级概念,Java 做到实处,一般会走 Java Web 或者是 Android 路线。
所以,你能在简历上写明这两点之一很有必要。
Spring
Spring 是一套很大的框架,需要投入非常多的时间去学习它。
如果你能学习的很好,不愁找不到工作。
但是,作为一个新手而言,面对这么一个庞大的系统,心中要有体系,不能面对困难慌了手脚。
Spring 是一个开源框架,分层架构让其内部的组件可以灵活更换。
Spring 讲究模块的,不同的功能封装成不同的模块,大概有 20 多个模块,但是只有一个模块是必须的,那就是 Spring Core Container。
所以,初学时要以 Spring Core Container 为中心,按照自己的状态去扩展其他模块的学习。
Spring 常见的模块如下:
- 核心容器
- Spring 上下文
- Spring AOP
- Spring DAO
- Spring CRM
- Spring Web
- Sprong MVC 框架
因为框架的特性,学习好 Spring 需要具备一些比较高阶的 Java 知识。
- Java class 及 class loader
- 反射
- 泛型
- 注解
- 依赖倒置
需要说明的是,我并没有做过 Spring 开发,但是我写过上面几个知识点的博文,阅读量非常的高,我相信,如果我因为业务需要应用Spring开发,我也能很快上手,方法就是我本节所陈述的。
Android
我把 Android 当作框架是因为 Android 开发就是基于一套框架上而言的,本质上它和 Spring 没有多大差别,不过一个应用在移动端,一个应用在 web 而已。
当然,现在的 Android 很多人用 Kotlin 开发,UI 也用 Flutter,但是作为原生语言 Java 进行开发还是成熟度最高的手段。
学习 Android 就是在 Android Framework 中开发。
它有 4 大组件。
- Activity
- Service
- Content Provider
- Broadcast Receiver
核心组件是 Activity,它就是 APP 界面的表现。
后台服务用 Service 实现。
Android 发展至今,开发者众多,足够丰富的开源库可以让一个新手像堆积木一样短时间完成一个像模像样的 APP.
Android 刚开始的几年,APP 拼得都是 UI 的美观和新奇,如今差异化越来越小,对于 Android 开发的要求如今更多体现在部署上。
- 插件化开发
- 热更新
- 卡顿优化
- 内存优化
- 安装包优化
- 批处理打包
- 数据加密
- AI 处理
如果,你能对于上面的细节和面试官侃侃而谈,那么你的即战力也就体现出来了。
经验
经验来源于你的项目或者是课题的经验。
对于大四的学生而言,毕业设计可以尝试用 Java 做一些东西,做过的东西可以写到简历里面去。
同时,平时也需要多积累经验。
- 多看看开源代码工程
- 自己按照自己的想法做一个小项目
不过,在网络时代,我还是推荐大家可以用 Java 写一个小程序。
有些同学可能会问,不知道写什么样的小程序。
建议从自己真实的需求做起,从简单的小东西做起。
比如写一个账号密码保存库,比如写一个 To-Do List,比如写一个日记本等等。
把一样东西做出来的好处是显而易见的,把技术落在实处很有必要。
做小程序的过程中,你将可能涉及到:
- 服务器选型
- 通信协议制定
- 后端实现
- 前端实现
与其不停焦虑与迷惘,不如动手做一些东西,让这些有成就感的东西告诉你其实你也不差。
选择
我知道,在大环境或者是自身条件的影响下,有时候你的简历总是石沉大海,你该怎么办呢?
我建议你向前看,假定一下 2 年后的你自己是什么样子。
想一想,那个时候你有没有丧失对编程的热爱?
如果你有一个积极的答案,那么眼前的苟且并不算什么。
也就是说,你不用执着于短暂的几个月找不到合适的工作,不断面试不断学习不断总结,总会成功的。
大公司进不了,你进小公司。
小公司也不行,你投外包公司。
外包公司也不行,你投实习生岗位。
实习生岗位也不行,你投测试岗位或者其他相关岗位。
要实现一个目标,首先就要在物理位置上接近它。
也许,你会反反复复在自信与自卑中轮换中煎熬,但是,咬咬牙你肯定可以过去的。
时间不会填平什么坎坷,从来都是你自己趟了过去。
加油!
转载:https://blog.csdn.net/briblue/article/details/105181734