转载:java程序员如何拿到2万月薪

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 作者:匿名用户链接:https://www.zhihu.com/question/39890405/answer/83676977来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:匿名用户
链接:https://www.zhihu.com/question/39890405/answer/83676977
来源:知乎

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:匿名用户
链接:https://www.zhihu.com/question/39890405/answer/83676977
来源:知乎

---------------------------------------------------------------我是分割线------------------------------------------------------------
有人回答说这只能是大企业或者互联网企业的工程师才能拿到。也许是的,小公司或者非互联网企业拿两万的不太可能是码农了,应该是已经转管理后才有可能。还有区域问题,这个不在我的考虑范围内,因为除了北上广深杭,其他地方也很难。
---------------------------------------------------------------我是分割线------------------------------------------------------------
还有人提到这个水平不止2w,其实工资是跟面试表现有关的,也跟其他综合水平有关,比如你是985,top10,或者研究生学历,也或者懂点node,Android等等的,或者表达能力强,击中面试官痛点肯定加分是吧。 如果你达到我说的水准,我们谈的起薪就是2w,有其他优秀的表现我们在这个基础上加点。但纯JAVA方面待遇是比较吻合的,毕竟这几个企业我都待过或面试过。 SSH真的不是我要黑,2w水平的面试几乎很少问SSH的知识,要问也是问架构层次的还有设计模式的。例如mybatis是如何管理session和cache的。spring里面有哪些你熟悉的设计模式,你怎么理解和应用的。
--------------------------------------------------------------我是分割线------------------------------------------------------------
两天没来看,居然有了这么多赞,感激。更开心的是业界几个超大牛也给我点赞了。同时也有很多质疑的声音。其实互联网相关的知识去互联网公司后很容易接触,并不是什么难点。如果你是在一线业务部门,我说的几个点几乎时时伴随着你,你完全不用担心自己不会。 我司很多刚来的大学生在半年内都能把一些中间件系统摸的很明白,并不是说有多难,只是接触少,对未知的东西感到害怕疑惑而已。我在这里可以给那些想学习这方面的同学提供几本书,这几本书对互联网的知识能很快入门和了解全景。不是广告。
  • 大型网站技术架构-核心原理与案例分析。 @李智慧大牛的书
  • 大型分布式网站架构-设计与实践。作者:陈康贤
  • 大型网站系统与java中间件实践。作者: 曾宪杰(原淘宝技术,现在蘑菇街)
  • 然后再推荐一个网站并发编程网 - ifeve.com。这个网站的知识绝对够你面试一个阿里P7,京东T3-2,腾讯T3-1。
好吧,我也不知道为什么都是推荐淘宝系的东西。巧合哦?!
这也是我最后一次更新答案,希望给那些需要这些信息的人帮助。那些质疑我的人去面试一下就明白我说的对不对,不要随便就质疑。 如果有机会可以再开一题,来谈谈互联网的JAVA面试题,我可以把90%的题目全部给你列出来。还有那个京东的工程师也说这个技能树不止2W,可我想说的是京东的水平真的很一般,现在一直处于模仿抄袭阶段。那个saf就封装了一层dubbo,后面加了一个序列化协议就变成jsf了,用了别人的就用了,有这么不好意思吗?架构师的水平真的太差了,很多都是机器堆的,当然你们有钱。有的业务一半的机器就可以很好的满足现有巅峰的场景,东哥是被11年的事故搞怕了吗? 我其实不怀疑我说的这些技能树能拿到25K或者30K的可能,但现在互联网这么泡沫,给自己一条踏实的路就那么难么?
--------------------------------------------------------------我是分割线------------------------------------------------------------

我来说说?好吧,那就说说。
不过我还是匿名,毕竟有同事也在上面。

有人回答说这只能是大企业或者互联网企业的工程师才能拿到。也许是的,小公司或者非互联网企业拿两万的不太可能是码农了,应该是已经转管理后才有可能。还有区域问题,这个不在我的考虑范围内,因为除了北上广深杭,其他地方也很难。

首先两万的月薪在BAT实在太普遍了,一般是高级工程师和资深工程师的职位。在阿里是p6~p7左右,在百度是t5左右,腾讯是t2-3左右,京东是t3-1,美团是p6左右,其他的我不了解。这种级别是他们主要码农层级,加班多,能解决大部分问题,但对系统的整体架构能力和深入分析瓶颈的能力还需要培养。

其次掌握的技能树主要有三个方面:
第一个是基础,比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。比如一般面试都会问ConcurrentHashMap,CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识点,因为这些对互联网的企业是绝对重要的。而且一般人这关都过不了,还发闹骚说这些没什么用,为什么要面试。举一例子,在使用线程池时,因为使用了无界队列,在远程服务异常情况下导致内层飙升,怎么去解决?你要是连线程池都不清楚,你怎么去玩?再举一例,由于对ThreadLocal理解出错,使用它做线程安全的控制,导致没能实现真的线程安全,你怪我哦?所以作为一个拿两万的JAVA程序员这点基础是必须的。

第二你需要有全面的互联网技术相关知识。从底层说起,你起码得深入了解mysql,redis,mongodb,nginx,tomcat,rpc,jms等方面的知识。你要问需要了解到什么程度,我可以给你说个大慨。首先对于MySQL,你要知道常见的参数设置,存储引擎怎么去选择,还需要了解常见的索引引擎,知道怎么去选择。知道怎么去设计表,怎么优化sql,怎么根据执行计划去调优。高级的你需要去做分库分表的设计和优化,一般互联网企业的数据库都是读写分离,还会垂直与水平拆分,所以这个也有经验的成分在里面。然后redis,mongodb都是需要了解原理,需要会调整参数的,而nginx和tomcat几乎都是JAVA互联网方面必配,其实很阿里的技术栈选择有点关系。至于rpc相关的就多的去,必须各种网络协议,序列化技术,SOA等等,你要有一个深入的理解。现在应用比较广的rpc框架,在国内就是dubbo了,可以自行搜索。至于jms相关的起码得了解原理吧,一般情况下不是专门开发中间件系统和支撑系统的不需要了解太多细节,国内企业常用的主要是activeMQ和kafka。你能对我说的都研究的比较深入,阿里p6我觉得是没问题的,当然这个还需要看你的架构能力方面的面试表现了。

第三就是编程能力,编程思想,算法能力,架构能力的考量。首先2W程序员对算法的要求我觉得还是比较低,再高级也最多红黑树吧,但是排序和查询的基本算法得会。编程思想是必须的,问你个AOP和IOC你起码的清清楚楚,设计模式不说每种都用过,但是也能深入理解个十四五种。编程能力这个我觉得不好去评价,但是拿一个2000W用户根据姓名年龄排序这种题目也能信手拈来。最后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,防重请求的设计能快速搞定而没有坑吧。

以上就是我觉得2w水平的JAVA程序员。不要说什么SSH,那最多值8K。


谢照东 ,一个没有梦想的小青年
以前学习的时候,因为资源有限,所以很难找到好的资料,或者牛逼的大神带我之类的。我最大的爱好就是去干嘛呢?对,就是一位答主说的。看看各大公司的JD!
做java的大公司无外乎就那么几个,。我在招聘网站上先找个一般的吧,比较大众那种。

Alibaba(25k-45k):
京东(20l-30k):
美团(20k-40k):
网易(15k-30k):
百度(20k-35k):
排名不分先后,公司太多,就先列举这些

以上,大家自己都能判别出来,在2W左右的程序员一般都在什么水平:
  1. 扎实的计算机基础,包括操作系统,网络,数据结构等
  2. 熟悉java语言,包括但不限于JVM,IO,多线程等
  3. 熟悉常见开源技术,并且能够知道其原理,深刻理解。(RPC,MQ,J2EE框架,应用服务器,分布式组件等等)
  4. 数据存储相关知识,MySQL,NoSQL等
  5. 学习能力和热情,热爱编程,热爱开源
  6. 团队合作,善于沟通,足够的工作经验(2年+)
没有总结完全,但是我觉得这些都是非常必须的。:)

你说呢?

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:匿名用户
链接:https://www.zhihu.com/question/39890405/answer/83742932
来源:知乎

阿里巴巴
<img src="https://yqfile.alicdn.com/img_3b788be88957ebff2105582926ecbb30.png" data-rawwidth="1264" data-rawheight="1016" class="origin_image zh-lightbox-thumb" width="1264" data-original="https://pic2.zhimg.com/015365b7fac84da2cb1139600c71c749_r.png">

分析:
1. “NIO”->老老实实研究一下netty的源码和原理,保证他问不倒你;“类加载原理”->老生常谈了,记得一个delegate,一个classloader如何造成内存泄漏就行;“动态代理、CGLIB”->肯定是问你如何生成proxy类,两者有啥异同。找几篇博客来看看就行。另外,我估计很大程度是需要你结合spring来回答,因此还是看看spring的aop吧;“GC的原理”->这个就厉害了,GC有好多种,到底是哪种的原理啊?但是以我身为一名老年程序猿来告诉你,好好看一下CMS GC和G1 GC就行。CMS答好了肯定是OK的,G1纯粹是锦上添花,给面试官留个追求技术的印象吧;“JVM内存模型”->JVM怎么还有内存模型?是Java语言的内存模型吧?没什么好说的,看Java语言规范吧;“性能优化手段”->胡侃吧,朝着怎么改进锁,怎么异步,怎么利用缓存,怎么选择合适的GC算法,怎么调整Hotspot VM的各generation比例,blabla(此处应有呕吐的表情,这种问题最烦了,你要是底气足,顶一句“具体问题具体分析”,我敬你是一条汉子)
2. “了解并发基础变成最优”->看不懂,感觉是废话,不管。并发这种东西,好好看一下java.util.concurrent包里的类。
3. “具备开发实战技能,可以熟练使用Eclipse、Idea、熟悉常见的调试方法及技巧、ant/svn/maven,有疑难杂症的排查经验”->工作一段时间都会吧?ant和svn完全不够酷,看得出来要么阿里的人比较守旧(或者懒),要么阿里的技术很老土。
4. blabla

总结一下,阿里的要求总体比美团低,但是给的工资比美团高( 仅限这两个JD的比较!特地加粗)。那么问题来了,到底是美团装逼,高要求招人,低要求做事;还是阿里sb,低要求招人,高标准给工资?当然还有一个可能,就是贴这个JD的hr是sb。总的来说,能拿到美团的offer,肯定能拿到阿里的offer。因此优质骚年应该以美团的标准来要求自己(认真脸)。


美团
<img src="https://yqfile.alicdn.com/img_839b657843d63cf5450af39955653c5c.png" data-rawwidth="661" data-rawheight="679" class="origin_image zh-lightbox-thumb" width="661" data-original="https://pic3.zhimg.com/790cea726ab7e1ca046c2a40da47922a_r.png">
分析:
1. 计算机专业基本功和写代码能力是废话,太主观。我们先放着,一会再回来review。
2. “熟练掌握 Java 及面向对象设计开发”=>工作一年以上;“对部分 Java 技术有深入研究”=>熟练IO的各种姿势,或者研究过Java内存模型,有此二者在手,面试官绝对对你刮目相看;“研究过优秀开源软件的源码并有心得”=>去Github找找几个star多的项目来看吧,推荐netty,不要多,一个就好。
3. “了解 SOA 架构理念、实现技术;熟悉常见设计模式”=>维基百科欢迎你,看看就行了;“熟练掌握 Spring、myBatis 等框架”=>过一遍源码吧
4. “熟练掌握 MySQL 应用开发、数据库原理和常用性能优化和扩展技术”=>买本mysql的书来看(认真脸);“NoSQL,Queue 的原理、使用场景以及限制”=>好好看看redis就行
5. “http 协议 搜索引擎”=>维基百科;“缓存”=>Google Guava cache,memcached,redis;“jvm 调优”=>掌握jvm参数(认真脸);“序列化”=>Google protocol buffer;“nio”=>netty;“RPC 调用框架”=>dubbo(垃圾)
6. "xxx优先"=>有最好,没有就算了
7. 美团应该不会2b到考逻辑题或者脑经急转弯,所以这里肯定是结合你做过的项目来说。一般都会问,1⃣️项目架构,问什么选择这个不选择那个;2⃣️碰到的最有挑战/最复杂/最blabla的问题是什么,怎么解决的
8. “高度的创业心和投入度”=>不一定要天天加班,但是碰到问题或者项目紧急的时候要加班,面试的时候要表现出这个态度,哈哈;“技术,业务,blabla”=>不能死关注技术,一定要结合业务来回答面试问题

好了,再回到第一条,“计算机专业基本功和写代码能力”,我们可以综合一下(根据分析2~8),美团要求的 可以是一个:(注意“可以”,你这么做了“可以”获得美团面试官的肯定,假如面试官真的是根据这份JD来要求你的话)
1. 对Java语言本身,我们掌握一下内存模型,看一点并发相关的东西(java.util.concurrent包里的类都看一遍),找几篇博客看下weak/soft/phantom reference是什么意思就行啦;
2. 对于JVM,看看书,理解一下Hotspot的常见结构啊名词啊啥的,记几个重要的参数,足以应付面试官了;
3. 熟读netty源码;
4. 略读Spring源码,重点理解关键概念(AOP面试官很爱问的哦);
5. 在维基百科上过一过JD里提到的一些名词;
6. 买本mysql的书看看,高性能mysql那本书就很好;
7. redis或memcached哪个用的多就多看看相关博客。都没用过?建议你看redis
8. 好好包装一下你做过的最nb的项目,准备几个技术难点和解决方法,记住一定要结合业务哦。(什么?没有?没有不会编吗?怎么编?往分布式和高并发方向编会吗?不会?那你不适合互联网。)
9. 多工作几年!

你看,也不是很难嘛。如果上面的几点你都做到了,还拿不到2w的美团高级JAVA开发工程师的offer,那美团肯定是冻结了headcount。<del>我认识的好多远远达不到上面需求的人都在美团呢。</del>

PS:面试官问你算法的话,一定要装作特别自信的说:“啊(第二声),算法?一般工作当中不需要自己手写算法吧?一方面是常用的算法,比如排序,查询,都有现成的代码来用;另一方面真需要手写算法的问题一般都是面向特定需求的问题,或者要求效率特别高的地方。这些地方可以结合真正的需求来做。”当然常见的算法的伪代码还是要会写的哦。如果面试官问你红黑树,哈哈,那赶紧跑路。不是谷歌脸书也不是面试算法程序猿的公司问你红黑树,这公司一定是在装逼(认真脸)。
 
 
 




唯有不断学习方能改变! -- Ryan Miao
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
64 9
|
4月前
|
存储 算法 Java
惊!Java程序员必看:JVM调优揭秘,堆溢出、栈溢出如何巧妙化解?
【8月更文挑战第29天】在Java领域,JVM是代码运行的基础,但需适当调优以发挥最佳性能。本文探讨了JVM中常见的堆溢出和栈溢出问题及其解决方法。堆溢出发生在堆空间不足时,可通过增加堆空间、优化代码及释放对象解决;栈溢出则因递归调用过深或线程过多引起,调整栈大小、优化算法和使用线程池可有效应对。通过合理配置和调优JVM,可确保Java应用稳定高效运行。
150 4
|
4月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
79 9
|
4月前
|
Java 程序员
Java数据类型:为什么程序员都爱它?
Java数据类型:为什么程序员都爱它?
57 1
|
1月前
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
|
1月前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
2月前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
26 5
|
2月前
|
Java 大数据 程序员
我的程序员之路:自学Java篇
我的程序员之路:自学Java篇
|
4月前
|
安全 Java 程序员
阿里开发手册 嵩山版-编程规约 (四)OOP规约-Java程序员必看知识点!!!
《阿里开发手册 嵩山版》的OOP规约部分强调了面向对象编程的最佳实践,包括正确使用静态方法、覆写方法的注解、可变参数的使用、接口的稳定性、equals和compareTo方法的使用、BigDecimal的正确比较、包装类与基本数据类型选择、POJO类的属性和方法设计等,以提升代码的质量和维护性。
|
4月前
|
设计模式 前端开发 Java
Spring,作为Java程序员的你能想到什么呢?
该文章主要介绍了Spring框架对于Java程序员的意义,包括Spring框架的一些核心能力和为什么它是如此重要。