为什么现在JAVA初级程序员要求这么高?
Posted androidstarjack
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么现在JAVA初级程序员要求这么高?相关的知识,希望对你有一定的参考价值。
点击上方关注 “终端研发部”
设为“星标”,和你一起掌握更多数据库知识
据我所知,如同18年的Python,学的人越多,越容易供大于求,越容易卷,要求越高!
当前Java程序员的群体比较庞大,Java本身语言是全场景编程语言,所以不少大厂都要求Java程序员具有全栈开发能力和多场景开发能力,还有就是 当前大厂在不断进行结构升级,构建自身的技术平台(生态)是非常重要的,
整理了几个大厂的技术标准,看看你还差多少?
插句题外话,多看面试题,找到自己差距在哪里:但是对于自己的专业技能,你还是要多了解的:
https://zhuanlan.zhihu.com/p/346994550
技术要求
阿里巴巴
扎实的计算机专业基础,包括算法和数据结构,操作系统,计算机网络,计算机体系结构,数据库等
具有扎实的Java编程基础,理解IO、多线程等基础框架
熟练使用Linux系统的常用命令及shell有一定了解
精通多线程编程,熟悉分布式,缓存,消息队列等机制;熟悉JVM,包括内存模型、类加载机制以及性能优化
精通spring mvc、orm框架(ibatis或hibernate)、模板引擎(velocity)、关系型数据库设计及SQL
具备良好的面向对象编程经验,深入理解OO、AOP思想,具有很强的分析设计能力,熟悉常用设计模式
有大型分布式、高并发、高负载、高可用性系统设计和稳定性经验
熟悉面向对象设计开发,熟悉各种常用设计模式,并有在具体的应用场景落地经验
熟悉Spring、iBatis,等开源框架及消息,存储等常用中间件。有通读过开源框架源码
熟悉基于Oracle或者mysql的设计和开发、Linux操作系统
熟悉SOA,有平台化实施经验者,有大数据量、高并发系统和大型网站构建经验
分布式系统应用架构设计与研发经验,精通Java EE、SOA、OSGI等相关技术
对各种开源的框架如Spring、Hibernate等有深入的了解,对框架本身有过开发或重构者可优先考虑
具有大型电子商务网站、O2O行业、C端产品系统架构设计经验
百度
熟悉常见设计模式,掌握java流行的开源框架SpringMVC/Spring Boot/Spring Cloud,熟练使用至少一种 ORM 框架
熟练掌握基本的数据结构和算法,有系统分析和设计的实践经验
熟悉Rest,HTTP,Socket、webservice、HTTP协议,具备并发、多线程的编程经验
对Mysql、Redis、MongoDB 等数据库有研究或者项目经验
具有大型互联网服务设计及开发经验
熟悉JVM,对JVM有一定理解,并能借助相关工具进行JVM性能调优
熟悉常见的开源分布式中间件、缓存、消息队列等,熟悉nginx,MySQL,Redis,mongodb 等常用的开源软件
熟悉 MySQL 数据库设计和优化,有 NoSQL 数据库使用经验
具有大数据存储或者高性能计算平台架构、设计及开发等方面经历
具有大型互联网服务设计及开发经验
腾讯
精通Web后台开发语言至少一种(Java.Net\\C++\\php),有一定的架构能力和良好代码规范
熟悉linux/unix系统与开发环境
熟悉TCP/IP协议,socket编程
熟悉mysql以及SQL语言
有高性能大容量服务系统设计开发经验
精通面向对象设计,精通J2EE开发,java web开发
全面并且扎实的软件知识结构(操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全);
具备良好的分析解决问题能力,能独立承担任务和有系统进度把控能力
精通MySQL或Mongo DB,熟悉缓存技术memcached、redis
有大型分布式、高并发、高负载、高可用系统设计、开发和调优经验
B/S结构系统分析及设计经验,有构建可伸缩、可扩展、高可用系统经验
有良好的开发习惯,熟悉Maven, Jenkins, JUnit等工具
精通MVC/REST架构、模板引擎、中间件的原理与应用
熟悉MySQL数据库,了解MySQL索引优化、查询优化和存储优化
我在30+的年纪用了一年时间入职阿里P8,从小公司搬砖,到担任国有银行CTO,从服务千万用户的金融系统到服务二十亿用户的互联网系统,10多年来,从未离开过开发一线。
凭借多年的面试官经验,我可以告诉你大厂的实际招聘潜规则就是能力要求升一级,职级评定降一级。
这里我们不谈企业内部所谓的末位淘汰和“优化”,仅从面试官的角度来看,比如一个组招人,我的标准一般是不能低于组内平均水平,不然招进来的人只会拉低整个团队的水平。
所以工业界对技术水平的要求往往会越来越高。你说竞争激烈也好,内卷也罢,事实就是如此。
再说Java,其实我刚从业那会儿用的不是Java,之前做过更长时间的C/C++,也做过前端、全栈,如果你真正达到一个门槛水平的话,其实不会care用什么技术栈。程序员要学会触类旁通,学一门新技术,查查资料看看文档,就可以很快上手,这一点很重要。
所谓的新技术、新名词,很多只是技术方法层面的差异,原理和底层其实是相通的,所以“扎实的基础”对于程序员来说并不是一句空话。
我以阿里P5-P7 Java工程师为例,大致的知识结构如下:
P5(校招):Java语言高级特性 + 关系数据库 + 面向对象/设计模式
Java语言高级特性简单来说就是教科书不怎么讲的东西,比如并发、算法线程、模板使用等等;
关系数据库,不是说知道个Oracle和Mysql就完了,它们的区别是什么?索引怎么建?索引算法是什么?怎么调优?从百万到亿级数据量之间要做些什么工作?
P6:Spring 框架 + Sharding + ORM + 高速缓存 + 并发/多线程编程 + 动态代理 + RPC框架 + 网络通讯。
面试一般就是抓住简历中的项目,不断深挖技术,主要看你是不是真的做过和理解。
P7:高可用架构 + JVM原理和优化 + 微服务架构和Spring Cloud
国内与国外差异比较大,国内非常重要所以是面试重点关注内容。用过Spring cloud的话,面试官会跟你深入沟通一番;如果能再懂点云计算,那么这个P7含金量就比较高了。
反映在招聘和面试,对P5-P7的要求:
P5:对于技术栈有通透的理解,体系化思维完整,有强大的培养潜力。
P6:对行业和技术趋势有着深刻的见解,技术知识熟知原理,能一竿子到底。
P7:有独立完整的从业方法论,有良好的从业背景和成功的案例,有0-1,1-N裂变的成功经验分享。有带领中小型团队的成功经验。
总的来说,职级越高晋升只会越难,而大厂招聘要求也是越来越严苛,
部分参考知乎:冷暖丫 |侵删
据我所知,如同18年的Python,学的人越多,越容易供大于求,越容易卷,要求越高!
当前Java程序员的群体比较庞大,Java本身语言是全场景编程语言,所以不少大厂都要求Java程序员具有全栈开发能力和多场景开发能力,还有就是 当前大厂在不断进行结构升级,构建自身的技术平台(生态)是非常重要的,
整理了几个大厂的技术标准,看看你还差多少?
初级实习的 要求:
1-3年的初级JD要求:
高级:
插句题外话,多看面试题,找到自己差距在哪里:但是对于自己的专业技能,你还是要多了解的:
终端研发部:2021年中高级最全Java面试题,肝了!zhuanlan.zhihu.com[图片上传失败…(image-485057-1630234973617)]
大厂阿里的技术要求
阿里巴巴
扎实的计算机专业基础,包括算法和数据结构,操作系统,计算机网络,计算机体系结构,数据库等 具有扎实的Java编程基础,理解IO、多线程等基础框架 熟练使用Linux系统的常用命令及shell有一定了解 精通多线程编程,熟悉分布式,缓存,消息队列等机制;熟悉JVM,包括内存模型、类加载机制以及性能优化 精通spring mvc、orm框架(ibatis或hibernate)、模板引擎(velocity)、关系型数据库设计及SQL 具备良好的面向对象编程经验,深入理解OO、AOP思想,具有很强的分析设计能力,熟悉常用设计模式 有大型分布式、高并发、高负载、高可用性系统设计和稳定性经验 熟悉面向对象设计开发,熟悉各种常用设计模式,并有在具体的应用场景落地经验 熟悉Spring、iBatis,等开源框架及消息,存储等常用中间件。有通读过开源框架源码 熟悉基于Oracle或者Mysql的设计和开发、Linux操作系统 熟悉SOA,有平台化实施经验者,有大数据量、高并发系统和大型网站构建经验 分布式系统应用架构设计与研发经验,精通Java EE、SOA、OSGI等相关技术 对各种开源的框架如Spring、Hibernate等有深入的了解,对框架本身有过开发或重构者可优先考虑 具有大型电子商务网站、O2O行业、C端产品系统架构设计经验
百度
熟悉常见设计模式,掌握java流行的开源框架SpringMVC/Spring Boot/Spring Cloud,熟练使用至少一种 ORM 框架 熟练掌握基本的数据结构和算法,有系统分析和设计的实践经验 熟悉Rest,HTTP,Socket、webservice、HTTP协议,具备并发、多线程的编程经验 对Mysql、Redis、MongoDB 等数据库有研究或者项目经验 具有大型互联网服务设计及开发经验 熟悉JVM,对JVM有一定理解,并能借助相关工具进行JVM性能调优 熟悉常见的开源分布式中间件、缓存、消息队列等,熟悉nginx,MySQL,Redis,mongodb 等常用的开源软件 熟悉 MySQL 数据库设计和优化,有 NoSQL 数据库使用经验 具有大数据存储或者高性能计算平台架构、设计及开发等方面经历 具有大型互联网服务设计及开发经验
腾讯
精通Web后台开发语言至少一种(Java.Net\\C++\\PHP),有一定的架构能力和良好代码规范 熟悉linux/unix系统与开发环境 熟悉TCP/IP协议,socket编程 熟悉mysql以及SQL语言 有高性能大容量服务系统设计开发经验 精通面向对象设计,精通J2EE开发,java web开发 全面并且扎实的软件知识结构(操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全);具备良好的分析解决问题能力,能独立承担任务和有系统进度把控能力 精通MySQL或Mongo DB,熟悉缓存技术memcached、redis 有大型分布式、高并发、高负载、高可用系统设计、开发和调优经验 B/S结构系统分析及设计经验,有构建可伸缩、可扩展、高可用系统经验 有良好的开发习惯,熟悉Maven, Jenkins, JUnit等工具 精通MVC/REST架构、模板引擎、中间件的原理与应用 熟悉MySQL数据库,了解MySQL索引优化、查询优化和存储优化
个人经验
我在30+的年纪用了一年时间入职阿里P8,从小公司搬砖,到担任国有银行CTO,从服务千万用户的金融系统到服务二十亿用户的互联网系统,10多年来,从未离开过开发一线。
凭借多年的面试官经验,我可以告诉你大厂的实际招聘潜规则就是能力要求升一级,职级评定降一级。
这里我们不谈企业内部所谓的末位淘汰和“优化”,仅从面试官的角度来看,比如一个组招人,我的标准一般是不能低于组内平均水平,不然招进来的人只会拉低整个团队的水平。
所以工业界对技术水平的要求往往会越来越高。你说竞争激烈也好,内卷也罢,事实就是如此。
再说Java,其实我刚从业那会儿用的不是Java,之前做过更长时间的C/C++,也做过前端、全栈,如果你真正达到一个门槛水平的话,其实不会care用什么技术栈。程序员要学会触类旁通,学一门新技术,查查资料看看文档,就可以很快上手,这一点很重要。
所谓的新技术、新名词,很多只是技术方法层面的差异,原理和底层其实是相通的,所以“扎实的基础”对于程序员来说并不是一句空话。
技术面试题:
https://zhuanlan.zhihu.com/p/346994550
阿里架构要求
我以阿里P5-P7 Java工程师为例,大致的知识结构如下:
阿里P5
P5(校招):Java语言高级特性 + 关系数据库 + 面向对象/设计模式 Java语言高级特性简单来说就是教科书不怎么讲的东西,比如并发、算法线程、模板使用等等;
关系数据库,不是说知道个Oracle和Mysql就完了,它们的区别是什么?索引怎么建?索引算法是什么?怎么调优?从百万到亿级数据量之间要做些什么工作?
P6
P6:Spring 框架 + Sharding + ORM + 高速缓存 + 并发/多线程编程 + 动态代理 + RPC框架 + 网络通讯。
面试一般就是抓住简历中的项目,不断深挖技术,主要看你是不是真的做过和理解。
阿里P7
P7:高可用架构 + JVM原理和优化 + 微服务架构和Spring Cloud 国内与国外差异比较大,国内非常重要所以是面试重点关注内容。用过Spring cloud的话,面试官会跟你深入沟通一番;如果能再懂点云计算,那么这个P7含金量就比较高了。
反映在招聘和面试,对P5-P7的要求:
P5:对于技术栈有通透的理解,体系化思维完整,有强大的培养潜力。
P6:对行业和技术趋势有着深刻的见解,技术知识熟知原理,能一竿子到底。
P7:有独立完整的从业方法论,有良好的从业背景和成功的案例,有0-1,1-N裂变的成功经验分享。有带领中小型团队的成功经验。
总的来说,职级越高晋升只会越难,而大厂招聘要求也是越来越严苛,
部分参考知乎:冷暖丫 |侵删
插句题外话,很多人不知道如何学习Java,也不是道学习Java是去培训班还是自学,那么参考一下我之前的帖子,希望能帮助到你
https://www.zhihu.com/question/456145745/answer/1916160506
月薪10K左右:
属于小白-1年经验,java入门级别。普遍学会java基础,常用框架中Springboot、mybatis能够灵活使用,懂得一下原理性的东西,然后自己做几个项目,简历再包装一下2年经验,好好准备一下面试,这样通过面试的概率就很高了。当然了,1年经验的同学如果技术还可以,包装一下3年经验也可以哈,工资的话13K、15k可以尝试一下。
所以,你应该准备这样一份面试题:
10K面试题:
1.抽象类和接口的关系和区别,以及你在时间开发过程中是怎么使用到的?
2.你知道反射机制和动态代理吗?
3.一个线程连续两次调用start方法会发生什么?简单谈谈线程的几种状态?
4.springmvc实现原理?
5.mybatis中#$的区别?
6.你知道设计模式吗?在实际运用中你会怎样去运用他?比如我这里有个策划打折活动,
比如VIP, 普通用户,顾客分别打不一样的折扣,你会用什么设计模式?
7.你知道索引失效嘛?举例看看?
8.多态在实际项目的使用?
9.你知道Spring IOC吗?Spring是怎么创建对象的?
10.你知道缓存机制不?
11.你的项目中有用到数据库分库分片吗?数据库分库分片规则?
12.在实际中你会怎样对sql语句进行优化?
13.常见的数据结构有哪些?在JAVA中是怎么使用到他们的?
14.JVM原理你知道嘛?有没自己调优过?
15.看你的项目里用到了springboot,谈谈你对springboot的理解?
16.你项目里用到了rocket MQ,那你知道rabbit MQ、rocket MQ和kafka他们之间的区别嘛?
能简单说说不?
17.redis常运用场景有哪些?你的项目中主要使用到redis是用到干嘛的?
18.有自己部署过redis嘛?redis是如何实现高可用的?
19.了解mysql的读写分离嘛?是如何实现高可用的?
20.Exception和Error的关系和区别?
21.基本数据类型转换为String时你有几种方法,分别是什么?
22.如何利用JDK不依赖外部工具,实现一个简单的缓存机制?请简述用到的技术和思路。
23.你项目中是怎样用到事务的?分布式锁呢?
24.Zookeeper有哪些运用场景?
月薪15K左右:
恭喜你,终于算个小高手啦,能独立搭建和负责完成一个完整项目。还记得我以前在外包公司,拿着15K工资,领导给了我一个项目,负责开发一个政府的资产管理管理系统,功能不会很复杂,会设计到资产的收纳、录入、报废等过程,其中还会涉及到条形码设计,和硬件标枪的扫码自动录入和识别等。是复杂也不算特别复杂,只要把各种表关系、字段等提前设计好,灵活运用代码生成工具,就会少写很多代码。
15K的能力,我们应该对springboot、springcloud、分布式锁、事务、多线程并发问题、JVM底层、网络层等知识要能理解并灵活运用!你应该准备这样一份面试题:
15K面试题
io/NIO的区别,为什么要用NIO,使用IO中的Buffered..也能实现NIO的面向缓冲,什么情况下用NIO?
2.熟悉的排序算法有哪些,快速排序算法的实现原理?
3.HashMap与ConcurrentHashMap有什么区别?HashMap的存储结构?
4.vector、ArrayList、LinkedList区别及存储性能。
5.线程实现的几种方式,有什么区别,一般用哪个,为什么?
6.多线程中线程池怎样使用及其实现原理?
7.volatile关键字的作用是什么?
8.synchronized关键字的作用,使用该关键字后保证同步了,同步代码块与同步方法有什么区别?
9.一个线程可以多次start吗,会报错吗?
10.spring AOP IOC实现原理?
11.spring中的事务的传播方式怎样实现的?
12.spring中事务实现的原理?
13.为什么要使用数据库索引,数据库索引有哪些,索引的底层原理是什么?
14.sql查询缓慢怎么处理,sql优化方案有哪些,explain用过吗?
15.数据库中的锁有几种?
比如行锁、表锁等会深问
16.数据库为什么要使用事务,事务的原理?
17.数据库分库分表的方法,垂直分还是水平分,根据哪些来分?
18count(1) count(5) count(*)有什么区别,100万条数据的效率如何?
19.solr搜索实现原理、使用的排序算法是什么,怎样实现快速查询?
20.3次握手的原理是什么?
21.动态代理实现原理是什么和动态代理使用的方法、类有哪些?
22.redis的数据结构有哪些?
23.虚拟机了解多少?
24.spring默认是单利还是多例的?
25.常用的队列有哪些?什么情况下使用?
26.你知道的线程安全的类有哪些,方法有哪些?
27.数据库的乐观锁和悲观锁的原理及使用?(version)
28.对GC了解多少?
29.堆和栈的区别,堆中存放什么,栈中存放什么?
30.用过的中间件有哪些?
月薪20K以上:
你已经是个大神级别的人物了,技术牛逼,是公司里的高级工程师、项目经理,或者架构师,能独挡一面,下面会有几个小弟,主要负责公司的整体项目把控。服务宕机了,老板骂你;下属写了个Bug导致损失,老板骂你;半夜老板打电话给你,说临时有个想法;大早上甲方打电话给你,说需求再改改。我只能说,压力山大。
对于Java程序员,最起码常见的一些开源框架你要知道:除了你的项目技能之外,想ssm,spring boot,微服务spring cloud, dubbo,注册中心zookeeper,消息中间件之类的,即使你项目中没用过,平常看帖子,动手练习啥的,你也要去看看,不然连面试机会都没有
最后,你要多看面试题,虽然你能说会道,但是对于自己的专业技能,你还是要多了解的
https://zhuanlan.zhihu.com/p/346994550
除了自己的专业技能之外,你也应该学会吹水,根据我身边的朋友观察到,那些能说会道的人混的都不差
大神级的面试题:
20K面试题
1.您认为的“大规模高并发访问的Web”有哪些呢. 请举例2个知名的网站
2.您开发过的核心功能,哪些呢
3.如果让你对外开发一个接口,你会考虑哪些因素?
4.设计数据库的时候会考虑哪些因素,怎样去建表?
5.说说负载均衡,缓存,文件数据库技术的心得和要点。
6.性能评估机制,指哪方面呢。您有这方面的经验和体会吗?
7.精通UML、以及熟练使用一种或多种建模工具。
8.您常去的技术网站是什么。工作做用过什么辅助软件呢?
不少人关心如何能拿到20K,那么也是需要花费很多的心思和经历的 ,毕竟现在中国是不缺少程序员的,这个问题看之前也有提到过,希望下面的帖子能给你一些启示:
https://www.zhihu.com/question/47597895/answer/1904365986
但是,比如,腾讯、阿里、抖音、快手这类互联网公司,因为在疫情期间用户暴涨,招聘需求不仅没有降低还暴增30%。
所以要求越高,薪资越高,薪资越高,要求越高!
我是程序员于小二@终端研发部 ,专注于分享技术开发小技巧和职场经验,希望我的回答能给你一些帮助,笔芯~
BAT等大厂Java面试经验总结 想获取 Java大厂面试题学习资料扫下方二维码回复「BAT」就好了回复 【加群】获取github掘金交流群回复 【电子书】获取2020电子书教程回复 【C】获取全套C语言学习知识手册回复 【Java】获取java相关的视频教程和资料回复 【爬虫】获取SpringCloud相关多的学习资料回复 【Python】即可获得Python基础到进阶的学习教程回复 【idea破解】即可获得intellij idea相关的破解教程关注我gitHub掘金,每天发掘一篇好项目,学习技术不迷路!
回复 【idea激活】即可获得idea的激活方式
回复 【Java】获取java相关的视频教程和资料
回复 【SpringCloud】获取SpringCloud相关多的学习资料
回复 【python】获取全套0基础Python知识手册
回复 【2020】获取2020java相关面试题教程
回复 【加群】即可加入终端研发部相关的技术交流群
阅读更多
为什么HTTPS是安全的
因为BitMap,白白搭进去8台服务器...
《某厂内部SQL大全 》.PDF
字节跳动一面:i++ 是线程安全的吗?
大家好,欢迎加我微信,很高兴认识你!
在华为鸿蒙 OS 上尝鲜,我的第一个“hello world”,起飞!
相信自己,没有做不到的,只有想不到的在这里获得的不仅仅是技术!
如果喜欢就给个“在看”
以上是关于为什么现在JAVA初级程序员要求这么高?的主要内容,如果未能解决你的问题,请参考以下文章