Java学到什么程度可以找到第一份工作

简介: 作者:黄小斜文章来源:程序员江湖很多Java初学都关心这么一个问题,Java学到什么程度以后可以找到第一份工作。大家的目标都很明确,也很实在,学习Java无非就是为了找工作,那到底我要学多少Java知识,才可以找到第一份工作呢。

作者:黄小斜
文章来源:程序员江湖

很多Java初学都关心这么一个问题,Java学到什么程度以后可以找到第一份工作。大家的目标都很明确,也很实在,学习Java无非就是为了找工作,那到底我要学多少Java知识,才可以找到第一份工作呢。

之前写过一篇文章,记录了我人生中第一场面试,当时我的Java水平无非就是刚入门的水准,但是作为校招生来说,找一份小公司的开发工作不算非常难,毕竟互联网公司那么多,要求也是天差地别,对技术、学历、实践能力的要求和评价标准也有很大的差距。

所以,到底Java学到什么程度才能找到第一份工作,我想应该用公司来作为变量,这样回答这个问题才有意义。

创业型小公司
创业型小公司的特点就是人少,事杂。这里我们指的是不到100人的小公司,这种公司其实也很多,我们抛开一些独角兽或者知名创业公司不谈,先谈谈大多数的创业公司,这些公司吸引不到优秀人才,并且也拿不出太多钱给员工,因此招牌要求也会比较低,学历基本不看,Java基础知识稍微掌握一些,做过几个Java Web项目,最好还能写写前端代码,能吹几句牛皮,应该问题就不会很大。

这种公司招人的渠道本来就少,薪水得不到保障不说,办公场所也很简陋,但是工作时间倒是少不了,所以啊,这类公司,我想也是培训机构给学员拍胸脯保证就业的最合适标准了。

中小型公司
说到中小型公司,泛指那些100人以上,500人以下的公司,大多数也是叫不上名字,但是还算有所发展的公司,这类公司稍微会正规一点,招聘和培训可能会有自己的一套标准,比如学历上可能稍微做一些要求,技术上的把关更严格一点,除了Java基础知识和项目经历之外,可能还会考查你的debug能力,代码规范、异常处理能力,以及对一些Java高级特性的理解能力,可能最好多用过一些框架。

总而言之,这类公司选人的标准更加有体系,不会像一些特别小的公司,招人很随意,领导拍个板就行。当然,这类公司也吸引不到太多优秀人的人才,但是也确实可能会有一些踏实能干的勤奋员工。

二三线互联网公司
这类公司范围就很广了,比如日薄西山的搜狐、新浪、360,或者是一直起不来的迅雷、金山、猎豹,甚至是爱奇艺、携程这类现状比较不错的企业等等,这类公司挤不到BAT TMD等一线互联网行列,但是在二三线阵容还算是比较不错的公司,它们对于人才的要求其实还是相对比较高的。

比如一般都会要求本科学历,对Java基础知识要比较熟悉,最好能够看过源码,如果没看过,那么源码方面的面试题好歹也要准备一下,除此之外,一般来说还会考察你的后端技术知识,比如数据库、网络、操作系统,考察的不会太难,能把面经上的知识点掌握了就算是比较扎实了。

这类公司一般不会考太复杂的题目,更希望招一些水平能力都是中等的人才,只要知识面能比较广,题目都能说到点子上,不需要掌握得特别深入,也可以有机会拿到offer。

其实归结原因,就是因为二三线互联网不太可能和一线公司争夺一线人才,所以一般争取的都是二线人才,不需要太优秀,但是至少要是中等水平,所以这些公司对很多程序员来说还是比较有机会的。

一线互联网公司和独角兽
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的变式题等等,算法题相对考察理论基础而言,筛选度更高,可以淘汰的人也更多。

相关文章
工作五年,一年内我靠这系列java面试宝典从13K到大厂30K
我认为对于面试以及进阶最佳的学习方法莫过于刷题+博客+书籍+总结! 前三者我将淋漓尽致地挥毫于这篇文章中,至于总结要靠个人。实际上越到后面你越会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。 我总结了一系列大厂面试中常问的面试技术点、深入解析以及答案,将为最近准备面试的各位去大厂保驾护航! 何谓面试?
|
存储 Java 数据库
java内存溢出问题(工作中常用、面试中常问的一个知识点)
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。这篇文章整理自《深入理解java虚拟机》。因为内存溢出问题不仅是工作中的一个重要方面,而且面试中也是经常问。
172 0
java内存溢出问题(工作中常用、面试中常问的一个知识点)
|
SQL JSON Java
工作四年,分享15个对Java 程序员有用的库
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
242 0
|
Web App开发 编解码 网络协议
在 Java 中使用 WebRTC 传输视频——准备工作
最近一段时间的主要工作内容是开发一个远程控制手机的功能,其中音视频传输的部分是采用WebRTC技术来进行的,而我们的手机都是通过与其直接连接的Agent服务器进行管理,Agent服务是Java写的,现在市面上又没有合适的Java版WebRTC库,所以我就基于Google开源代码,写了一个JNI调用WebRTC Native的库。之前的一篇文章,我主要讲了讲我是怎么编译WebRTC的。这篇文章,我就来分享一下我是怎么在Java中使用WebRTC的,以及我根据业务需要对WebRTC的一些改动。
|
存储 安全 NoSQL
《面试知识,工作可待:集合篇》-java集合面试知识大全
在工作上必须保持学习的能力,这样才能在工作得到更好的晋升,涨薪指日可待,欢迎一起学习【提升能力,涨薪可待】系列
178 0
《面试知识,工作可待:集合篇》-java集合面试知识大全
|
前端开发 网络协议 Java
Java学到什么程度能找到一份还不错的工作
大家在学习Java时肯定都想过一个问题,学到什么程度才能找到不错的工作,今天我根据收集的资料解答这个问题
157 0
|
安全 小程序 Java
带你快速看完9.8分神作《Effective Java》—— 并发篇(工作里的这些坑你都遇到过吗?)
当多个线程共享可变数据的时候,每个读或者写数据的线程都必须执行同步。 关键字 synchronized 可以保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块。 同步不仅可以阻止一个线程看到对象处于不一致的状态之中,它还可以保证进入同步方法或者同步代码块的每个线程,都能看到由同一个锁保护的之前所有的修改效果。
带你快速看完9.8分神作《Effective Java》—— 并发篇(工作里的这些坑你都遇到过吗?)
|
存储 机器学习/深度学习 缓存
带你快速看完9.8分神作《Effective Java》—— Lambda 和 Stream篇(小王工作里用的很多)(二)
42 Lambda优先于匿名类 43 方法引用优先于Lambda 44 优先使用标准的函数式接口 45 谨慎使用Stream 46 优先选择Stream中无副作用的函数 47 Stream要优先用Collection作为返回类型 48 谨慎使用Stream并行
带你快速看完9.8分神作《Effective Java》—— Lambda 和 Stream篇(小王工作里用的很多)(二)
|
存储 Java 程序员
灵魂拷问:Java 的 substring() 是如何工作的?
在逛 programcreek 的时候,我发现了一些小而精悍的主题。比如说:Java 的 substring() 方法是如何工作的?像这类灵魂拷问的主题,非常值得深入地研究一下。 另外,我想要告诉大家的是,研究的过程非常的有趣,就好像在迷宫里探宝一样,起初有些不知所措,但经过一番用心的摸索后,不但会找到宝藏,还会有一种茅塞顿开的感觉,非常棒。 对于绝大多数的初级程序员或者说不重视“内功”的老鸟来说,往往停留在“知其然不知其所以然”的层面上——会用,但要说底层的原理,可就只能挠挠头双手一摊一张问号脸了。
灵魂拷问:Java 的 substring() 是如何工作的?
|
Java
工作几年后再来总结下Java泛型
泛型是 Java 的高级特性之一,如果想写出优雅而高扩展性的代码,或是想读得懂一些优秀的源码,泛型是绕不开的槛。
106 0