刚开始学习 Java 的小伙伴,尤其是那种又没钱又没有背景的,刚开始学习 Java 都关怀这么一个问题:到底把 Java 学到何种水平能力找到第一份工作呢?
每个人都很事实,指标都是相当的统一,都是为了能拿到像他人高薪的工作。那到底一个 Java 初学者要学多少 Java 常识,能力找到第一份 Java 工作呢?
在很久以前我已经写过一篇对于本人的文章,记录了我 IT 职场中第一次面试,过后我的技术水平跟大家差不多,就是刚入门的水准,毕竟是一个刚接触的小白。
然而作为一个刚开始工作的老手,找到一家小型公司的 Java 开发工作还是比拟容易的,毕竟当初最多的就是互联网公司,每个公司对于员工的要求也是天差地别。
比方阿里、华为这样的公司,他们可能对于学历要求比拟高。而一些只有几十个人的守业公司,他们更加重视这个人的技术能力、实际能力、解决问题的能力。
我想应该用不同的公司来作为规范,只有这样我才感觉有现实意义:
守业型小公司
守业型小公司的特点就是人气比拟少,平时做事件比拟杂。在这里我说的是不到百人的守业公司,这样公司在国内是最多的,以我多年退职场的教训来看,大多数这样的守业型公司,他们很难招聘到十分优良的技术人才。
第一个是他们没有这样的实力去给他们发工资;
第二是比拟优良的人才肯定是被大公司挖走的。这样的公司自身没有什么底气,所以他们对于应聘者要求也会比拟低,学历根本都是不看的,Java 基础知识能良好的把握,能独立做几个 Java Web 我的项目,根本都能够应聘上,最根本的 CRUD 能够独立实现。对于这样的公司,曾经是不错了。
这种小型的守业公司招聘人才的渠道非常少,每个月的薪水得不到保障,而且整个办公环境也比拟差,然而工作工夫倒是一点都不少。所以,像去这种类型的公司找工作,只有本人真正的学了一些本事,基本上都能够很容易找到工作。
中小型公司
个别定位中小型企业,都是说那些 100 人以上,500 人以下的成熟公司。广泛都是叫不上名字,然而公司还算有发展潜力的,这样的公司略微正规一点,整个的办公环境会好很多,以及一些福利待遇,而且不必放心发不进去工资的问题。
招聘技术人才和培训人才会有本人的一套规范。他们的要求个别都是大专学历以上的,对于集体的技术上把关更严格一点,除了能够良好的把握 Java 基础知识和我的项目之外,还会考查你的 debug 能力,代码标准、异样解决能力,以及对一些 Java 高级个性的理解能力,可能最好多用过一些框架。这就要求咱们在学习的过程中,多付出精力写代码,并且对于一些原理问题要搞清楚。
总的来说,这样公司在提拔技术人才的时候,规范更加典范化,更加有体系。不会像守业型公司那样随便,只有领导拍个板就行。在我看来,他们这样的公司其实也吸引不到太多优秀人才,但不同的是,的确会有一些能力不错的公司骨干。
二三线互联网公司
这种类型公司范畴十分广,比方大家常据说的搜狐、畅游、新浪、360,还有始终萎靡的迅雷、金山、猎豹,甚至是爱奇艺、携程这类现状比拟不错的企业等等。
这种级别的公司还挤不到 BAT TMD 等一线互联网行列,然而如果你能进入这样的公司,曾经是十分不错了。薪资不会低于年薪 40 万。它们这样的公司对于技术人才的要求就要十分高了。
他们的最低要求就是本科学历,对 Java 基础知识要达到精通的水平,要能够十分纯熟的浏览源码,如果你没看过源码,那么在源码方面的面试题肯定要好好筹备一下。除此之外,一般来说他们还会考查你网络常识、操作系统,考查的不会太难,能把面经上的知识点把握了就算是比拟扎实了。
这种类型的公司个别不会考太简单的题目,他们招聘的需要个别都是中级程序员,只有知识面可能广,考你的题目都能说到关键点下面,其实不须要把握得特地深刻,也能够有机会拿到 offer。
总结来说,我认为二三线互联网企业不太可能和战斗在一线的互联网公司抢夺人才,所以他们个别争取的都是二线人才,不须要太优良,但至多要是中级程序员的程度,所以这种类型的公司对很多 Java 程序员来说机会还是十分大的。
一线互联网公司和独角兽
BAT、TMD 等互联网企业都属于这类公司,这种规模的公司和二三线互联网公司的倒退差距还是比拟大的。公司的人数规模、市场市值、还有股价方面,业务以技术为根底,因而规模的公司的技术就是互联网业内最顶尖的技术。比方阿里的云计算和中间件,头条的举荐算法、腾讯的游戏技术等等。
想要进这样令人羡慕的公司,必须要把握 Java 根底、计算机基础知识,并且是十分熟练地把握,你须要深刻了解每一个知识点,因为面试官会不断深入地向你发问,理解你的常识深度,同时,你须要对源码有所了解,在读懂源码的根底下来了解框架的实现、JDK 的实现。分布式、高并发、大数据、算法这些都是在考查的范畴之内。
另外,十分须要你对 JVM 虚拟机有十分清晰的意识,不仅仅只是理解简略的构造,垃圾回收原理,甚至还要晓得如何在遇到线上问题时通过 JVM 调优来解决它们。
同理,你还须要对 Java 并发编程和网络编程的应用办法与底层实现原理十分相熟,不仅仅答出 NIO 和 BIO 的区别,或者是 synchronized 和 lock 的区别,你还须要晓得 NIO 的底层实现 epoll 是什么,synchronized 对应的 mutex lock 是什么,lock 和 condition 的实现原理又是什么,而 lock 自身也是通过 AQS、CAS 操作类等组件来实现的,其中的内容切实太多,绝不只是几道面试题就能够搞定的。
除此之外,这些公司对数据库、缓存、分布式技术等方面的要求都会比其余公司要高得多,你最好要搞懂 MySQL 的存储引擎、索引和锁的实现原理,Redis 缓存的数据结构、备份形式、底层实现。
同时如果你能了解负载平衡算法、CAP 实践,甚至是 raft 和 paxos 算法,以及分布式罕用技术如音讯队列、zookeeper 等等,那么无疑也是能够为你加分的技能。
为什么这些顶级的大公司的要求这么高,因为它们是世界上最好的互联网公司,要招的天然也是最优良的人才,如果考查底层原理还不能满足他们筛选人才的须要,他们也会考查面试者的算法能力,比方 LeetCode 上 medium 难度的原题,或者是剑指 offer 的变式题等等,算法题绝对考查实践根底而言,筛选度更高,能够淘汰的人也更多。
最初总结
我已经在阿里呆过两年,最初来到的起因是切实受不了每天加班到 12 点的作息时间。然而在阿里的这段日子,成长的确是十分大的。大公司也并没有大家想的那么好,除了工资高之外,其余的都是够人受的,简直没有升职空间,因为人才太多了。简直每天都加班,没有太多的生存体验。而且条条框框特地多,每天都是在被限度。当然了,如果你有实力进入大公司,最好还是去锤炼几年,年轻人嘛,还是闯一闯。