这几天在知乎上看到这问题,来记录一下,说一说自己的感悟。
搞Java年薪40w是什么水平

有人怀疑这要很高的级别才能给吧,40w,不说初中高了,对边阿里p6,百度t5,腾讯2-3,都能给这个价。
我面40万的时候,拿了三家offer,给的薪资都是大概这样子,但是title级别给的都不是高级。那个时候我就较劲,并不是想再多点钱,而是想高一点title ,现在想想还挺傻的,钱不多级别高了去公司也升不上去呀,涨工资只能靠普调了?后来也没有挣扎过来,就选了一个厂子大的入职了
至于什么水平,我给自己整理了一套面试题,不是很具体到什么题目,就是一个方向,你看看每个题目你能扯上几分钟滔滔不绝。
不要觉得这里有些题目很基础,或者题目不够具体,其实每个题目都能无限发挥
当你看的书足够多,真正融会贯通,串联一个完整都知识体系,每个题目你都可以展开滔滔不绝,面试官想要的所谓亮点,第一印象就是这么来的,标准答案并不一定能打动面试官。

评论区总是时不时出现一些杠精,本来不想理会的,怕是让这些人误导别人,我只想说,别用你有限的目光去丈量这个世界,优秀的毕业生从两年前进BAT 华为等大厂就25w年起了,两年后跳槽人家都40了,不要说那些没用的,只因为人家优秀,很多人不如毕业生。
楼上那个说cookie和session是毕业生面试水平,好,你现在有工作三年的人我在问你,别告诉我cookie在客户端,session在服务端。对不起,那你真的不如毕业生,至少996体力比你好。当然能力是全方位发展,不能几个面试题就断言。但是你还有别的特长亮点展示你的能力吗?比如你说我登上过珠峰。那面试官把你招进来你可能真的是办公室里户外运动最棒的。
没有怎么办?人穷就要多读书。
面试官问你个最简单的hashmap和arraylist的区别,这个够简单了不?工作三五年多你准备怎么回答?你还准备告诉面试官hashmap基于数组和链表吗?那反问hashmap 1.8有什么改进,你说红黑树,好,你很棒,那问你为什么是红黑树而不是普通二叉树,你想过吗?你依旧答上来了,优秀,那再问问源码阅读能力,hashmap 1.8里如何解决hash冲突,rehash用了怎样巧妙的算法?你依旧答上来了,你真的很优秀。值得肯定的是你学东西不会不求甚解。再展开问,还有别的解决rehash的办法吗?开放定址法(线性探测再散列,二次探测再散列,伪随机探测再散列) ,再哈希法 ,建立一个公共溢出区,这些方法,你又研究了几个。只想说,随便一个题目深挖,你总能死在某个你知识网中的某个死角,不是要求你啥都会,那也不可能,你啥都会你为什么还来面试给人打工。不要小看任何题目,虚心学习,这个题目你要滔滔不绝都把你所有知道都展开说,直到面试官服气喊:停,兄弟,时间有限我们还有别的可以聊聊。这样跟挤牙膏式面试又是怎样的主观印象?
不多说了,送给那些杠精
我不是大神,我只是夹着尾巴虚心学习,还有人问我为什么做公众号或者回答知乎,再给初学者一个建议,大厂里生存潜规则有两个软实力不可缺少,1.影响力(如知识分享能力),晋升的时候你怎么证明?你说我技术公众号有10万读者。这个够硬核了,我在公司内部做过百人以上的技术分享讲座,也可以。2.沟通能力(和PM的撕逼能力),这些都是怎么练出来的,仁者见仁智者见智,这些都是我的弱项我就不吭害读者瞎杰宝发言了!
基础题目
1. Java线程的状态
2. 进程和线程的区别,进程间如何通讯,线程间如何通讯
3. HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别
4. Cookie和Session的区别
5. 索引有什么用?如何建索引?
6. ArrayList是如何实现的,ArrayList和LinedList的区别?ArrayList如何实现扩容。
7. equals方法实现
8. 面向对象
9. 线程状态,BLOCKED和WAITING有什么区别
10. JVM如何加载字节码文件
11. JVM GC,GC算法。
12. 什么情况会出现Full GC,什么情况会出现yong GC。
13. JVM内存模型
14. Java运行时数据区
15. 事务的实现原理
技术深度
1. 有没有看过JDK源码,看过的类实现原理是什么。
2. HTTP协议
3. TCP协议
4. 一致性Hash算法
5. JVM如何加载字节码文件
6. 类加载器如何卸载字节码
7. IO和NIO的区别,NIO优点
8. Java线程池的实现原理,keepAliveTime等参数的作用。
9. HTTP连接池实现原理
10. 数据库连接池实现原理
11. 数据库的实现原理
技术框架
1. 看过哪些开源框架的源码
2. 为什么要用Redis,Redis有哪些优缺点?Redis如何实现扩容?
3. Netty是如何使用线程池的,为什么这么使用
4. 为什么要使用Spring,Spring的优缺点有哪些
5. Spring的IOC容器初始化流程
6. Spring的IOC容器实现原理,为什么可以通过byName和ByType找到Bean
7. Spring AOP实现原理
8. 消息中间件是如何实现的,技术难点有哪些
系统架构
1. 如何搭建一个高可用系统
2. 哪些设计模式可以增加系统的可扩展性
3. 介绍设计模式,如模板模式,命令模式,策略模式,适配器模式、桥接模式、装饰模式,观察者模式,状态模式,访问者模式。
4. 抽象能力,怎么提高研发效率。
5. 什么是高内聚低耦合,请举例子如何实现
6. 什么情况用接口,什么情况用消息
7. 如果AB两个系统互相依赖,如何解除依赖
8. 如何写一篇设计文档,目录是什么
9. 什么场景应该拆分系统,什么场景应该合并系统
10. 系统和模块的区别,分别在什么场景下使用
分布式系统
1. 分布式事务,两阶段提交。
2. 如何实现分布式锁
3. 如何实现分布式Session
4. 如何保证消息的一致性
5. 负载均衡
6. 正向代理(客户端代理)和反向代理(服务器端代理)
7. CDN实现原理
8. 怎么提升系统的QPS和吞吐量
实战能力
1. 有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的。
2. 开发中有没有遇到什么技术问题?如何解决的
3. 如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能。
4. 新浪微博是如何实现把微博推给订阅者
5. Google是如何在一秒内把搜索结果返回给用户的。
6. 12306网站的订票系统如何实现,如何保证不会票不被超卖。
7. 如何实现一个秒杀系统,保证只有几位用户能买到某件商品。
软能力
1. 如何学习一项新技术,比如如何学习Java的,重点学习什么
2. 有关注哪些新的技术
3. 工作任务非常多非常杂时如何处理
4. 项目出现延迟如何处理
5. 和同事的设计思路不一样怎么处理
6. 如何保证开发质量
7. 职业规划是什么?短期,长期目标是什么
8. 团队的规划是什么
9. 能介绍下从工作到现在自己的成长在那里
更多从业经验关注我微信吧,私信不一一回了
公众号「转行程序员」:be_coder
网友评论