随便聊聊
大抵是出来的工作时间久了,看见的、经历的事情多了,打交道的人多了,人就容易发现自己的渺小,特别容易emo。记得刷到过一个视频,里头有一段话:眼界开了有时也是一件糟糕的事,因为你知道有很多事情,其实是无能为力的,但是你又看到了,明白是那么一回事,但是呢,就是办不到。
其实这些都是很正常的现象,导致这个场景出现的因素有很多,就比如说大环境经济的不景气,各种大厂在削减自身的开支,特别是前几年行情还不错,就开始流行起了内卷的说法,还有一些因素的话,是在外头看的事情多了,人都会有攀比的心理(这才是人性),当所有的社交媒体都在鼓吹这些美好的东西的时候,会让人产生那种奇葩的感觉,自己好像确实很差劲。
就像马斯克说过的:
社交媒体有时比较糟糕的,就是每个人都在上面发表自己美好的一面,导致大家觉得每个人都过得很好,你却过得很糟糕,需要理性去看待社交媒体。
Java真的要过时了吗?近几年来,互联网行业区块链、大数据等新技术层出不穷,Java被吐槽的也越来越多,不过JAVA编程语言市场是否真如网友所说的那样:已经趋近于饱和状态,甚至已经过时了呢?对于Java争议性是很大的,不过我觉得这是好事,为什么这么说呢,因为有争议就说明它还是挺火的,不然大家费那个劲讨论它干什么呢。 言归正传,用Java的人越来越多,吐槽它的也越来越多。随着互联网时代的发展,一些领域使用新的开发语言,在一定程度上抢占了Java的市场份额,但Java仍旧凭借自己的可移植性,安全性,编码简单等优势,占据着整个开发市场的主要地位。众所周知JAVA语言占据了各个领域的开发应用,因为其简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,使其在互联网中得到了广泛的应用。
并且从 2017 年开始,Java 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。Java一直在更新换代,除非有一项很大的技术突破能够替代Java。但其实没有不会过时的技术,只不过是时间问题,现在社会发展更新迭代很快,要想不被社会淘汰就需要不断的提升自己不断学习。
有心人可能会去看求职软件,看过之后你会发现,Java行业招聘还是非常多的,这说明目前市场还是很需要Java人才的,所以不要怕,毕竟没有哪个大公司会想用一个只流行十几年二十几年的编程语言,再者,Java会不会被取代,我想Java制作人员应该比大家更担心这个问题。
寒冬年年有,今年特别冷
也不知道是从什么时候开始,或许是从很早就有了,只是当时还没有到现在这种寒气逼人的程度,现在身处互联网的小伙伴们,都开始可以清楚地感受到这股寒意,身边很多朋友在职的时候是能内卷的使劲内卷,被裁员的努力找下家,不是说被裁了就是不努力的,在职的时候大多数也是凌晨了才下班。但是大厂也频频爆出各种财报不理想的,更别说那些中小企业了。
相信在当前市场各种人才济济,有一个朋友在大厂当面试官的,按他说的说法,是一个岗位放出来,投进去很多阿里的,可想而知这个竞争有多大了吧~
在寒冬里,也要保持斗志
但是啊,大危机孕育着大机会,历史也无数次向我们证明、展示了什么叫做绝地反击,为什么会有很多的抄底神迹,那都是源于自身独特的眼光与扎实的本领。
翻微信朋友圈的时候,有之前一个请教过我的小伙子,发的一个面试的情况,截图来看是很不错,他是今年刚刚毕业的那种,从他之前的朋友圈来看,是一个比较积极进取的人。在他大学期间参与各种开源社区的那种夏令营活动,其实就是社区有时候会发布一些小任务,在导师的指导下完成了,就会有社区发的一些奖章,这里面的甚至有些优秀的,是直接被鹅厂录取了。
他自己本身基础是挺厉害的,至少比我当年强很多很多,后面也给了我一份Java面试八股文,有上千页
加上自己本身的学历不错,学习各种技能也还行,一毕业就拿了10几个offer~
言归正传,说起这个并不是为了炫耀别人能有多厉害啥的,只是他的这个遭遇的背后是给了我一剂强心剂,市场岗位是有的,但是需要的是你更优秀,更突出,更有价值。
跟他谈了一下这些大厂的面经,整理了两个比较典型的大厂的面试题给大家,内容有点长,但可以看看有没有不懂的,算是提前预习一下:
阿里面经:
-
常用 GC 算法,常用的垃圾收集器, G1 了解吗
-
场景题:cpu 打满且频繁 full GC,怎么解决?
-
有 jvm 调优的经验吗?实际工作中遇到过内存相关的问题吗?用过哪些堆栈工具调试?
-
Mysql 索引,数据结构为什么使用 B+ 树
-
索引覆盖了解吗
-
索引失效的场景
-
简单描述一下数据库的四种隔离级别以及对应的三种相关问题
-
MVCC + 锁 保证隔离性
-
造成幻读的原因了解吗,快照读、当前读。
-
数据库自增 ID 和 UUID 对比
-
HashMap 源码,数据结构,如何避免哈希冲突,对比 HashTable
-
HashMap 源码中,计算 hash 值为什么有一个 高 16 位 和 低 16 位异或的过程?
-
为什么重写 equals 还要重写 hashCode,不重写会有什么问题
-
ConcurrentHashMap 底层实现,扩容问题。
-
如果让你自己实现哈希表,你会考虑什么问题?
-
场景题:亿级别黑名单、短链接,你考虑使用什么数据结构?布隆过滤器、前缀树。其中布隆过滤器问了基本的原理和实现方式
-
Java 引用类型,强软弱虚
-
Java 是引用传递还是值传递
-
Object 类你了解哪些方法
-
接口和抽象类的区别
-
线程池核心参数,以及工作原理
-
ReentrantLock 对比 sync 锁
-
lockInterruptibly()、acquire()、tryAcquire() 方法
-
CAS 机制了解吗,存在什么问题
-
对象锁和类锁的区别
-
如果让你自己实现阻塞队列,如何实现?阻塞唤醒这一部分,如何实现?
-
ThreadLocal ,Volatile
-
看你项目中用到了 Netty,简单介绍下吧。这里还有个 问题是问到 Netty 和 SpringBoot 整合的,但我一直都没理解她想问什么
-
粘包拆包问题,Netty 解决粘包拆包的 Decoder
-
Spring 事务了解吗,Spring 事务的注解不生效,是什么原因
-
算法题:手写快速排序,时间复杂度,稳定性
-
看你项目中用了一致性哈希做负载均衡,简单介绍一下
-
项目中 CompletableFuture 如何使用的
-
算法题:给定一个字符串,找到其中最长回文串
-
计网和组成原理学过吧,你认为哪个掌握得好?我选了计网。这一部分问得很深入,我没来得及记录,以下部分只是一些零散片段,但是整体问的时候是有逻辑的。
-
TCP 三次握手,四次挥手整个过程包括状态的转换。为什么是三次握手、四次挥手。发送 Fin ,实际的意义代表什么?(发送方没有数据要发送了,可以断开连接)
-
四次挥手,为什么等待 2 MSL
-
流量控制、拥塞控制
-
后面关于网络就更深入了,TCP 底层是怎么实现的,如果让你用 Java 模拟 TCP 的过程,做一个仿真,你有什么想法。大学学习计网的时候,协议栈之类的了解过吗(这部分我都不懂,认栽了)
-
看你项目中用到了 Spring,自动装配的过程了解吗。
-
Spring 启动类的注解,介绍一下
-
因为我项目中用到了,所以被提问了 Spring 二次开发常用的扩展点,还涉及到了 Bean 的生命周期。BeanPostProcessor,在你项目中如何使用的
-
Spring 中你常用哪些注解?Autowired 实现原理
阿里的面试整体感觉不错,大部分都是答上来了的,按照整理出来八股文中的内容,认真准备就好。计网仿真 TCP 以及后面深入的部分不懂, Autowired 实现原理没说清除,其余的都答上来了。
字节跳动:
-
自我介绍,项目部分主要介绍了 rpc 项目,后续的问题都是基于这个项目
-
rpc 远程调用的整个流程
-
项目中的 SPI 机制,介绍一下原理以及你做了哪些改进
-
项目中用到了负载均衡算法,详细介绍一下
-
一致性哈希的原理,虚拟结点
-
项目中的序列化方案,为什么序列化,你都了解哪些常用的序列化方法。
-
你项目中使用了 Kyro 序列化,优点你提到了,缺点了解吗
-
通信协议是你自己设计的,假如后面需要变更,比如添加新的字段,你项目中如何处理的?
-
服务的灰度发布介绍一下,如何实现的?
-
Zookeeper 作为注册中心,假如崩溃了怎么办?这里开始连环问了
-
你提到了 Zookeeper 的一致性,它是如何保证的?
-
ZAB 协议,选举的过程,这里问的很详细
-
Zookeeper 是强一致性吗?
-
网络分区了解吗,CAP 理论
-
Zookeeper 如何应对网络分区的,脑裂问题了解吗,如何解决?
-
假如我同一时间有大量服务发布,你提到了 Zookeeper 只有主节点负责写, 怎么解决?假如主节点崩溃了,新选举出的主节点仍然没办法面对我的大流量,也崩溃了,如何解决?
-
MQ 的原理,你知道哪些 MQ,各自有什么特点,什么时候需要用 MQ
-
你刚才提到了服务端保护机制,如何实现的?这里我答了限制连接数以及接口限流,基于责任链模式。之后问了用到的令牌桶以外的常用限流算法。
-
算法题1:链表反转,你知道的所有实现方式。这里我写了递归和非递归两种。
-
算法题2:有一个 n * n 的棋盘,每个格子有 RB@ 三个状态,R 表示红色,B 表示蓝色,@ 表示此路不通。机器人从左上角走到右下角,每次只有上下左右四个方向选择,相同颜色之间没有代价,跨越不同颜色代价为 1,求解机器人从左上角走到右下角,最少的代价。
字节的面试问题几乎都答上来了,有一些不太熟悉的,在面试官的提醒下也都回忆起来了,也没有遇到难度比较大的问题,时间耗费的多的地方是被卡在了算时间复杂度,自己不熟练的地方还是得多练。 到这里面经的分享就结束了,不知道有多少是大家很熟悉的,又有那些是需要补习加深的呢
做到士别三日,当刮目相看
不管是在什么时间段,自我成长是个伴随你一生的事情,但真的,懒惰是我们需要对抗的一种劣根性,这种懒惰,不单单是说的身体上,还包括你精神上的懒惰。
1、在体力上的懒惰,也许是平时只会坐享其成,不想着去付出,或者自己满足当下,没有其他追求。
2、而精神上的懒惰,举个例子,比如说有些事情的处理方式,已经被实践过是不对的,但是却一直按照这个错误的方法去解决,而不想懒得动脑筋去思考怎么做对(举个栗子,相信比较少),那么整个人也就是在这个时候停止了进步。
说这个当然并不是想给大家灌鸡汤,还是需要我们自己多努力,多拼命。为什么?还不是为了能够每天进步一点点,有句老话就是士别三日,需刮目相待。没毛病啊,就是看你能不能每次都比上一次做得更好,每天有一点点的在进步,日积月累下来,那进步得非常可观的,孟子都说过:不积跬步无以致千里,不积小流无以成江海。说好不灌鸡汤,感觉还是像鸡汤,哈哈哈。
结语
还是想引用雪莱一句话:“冬天到了,春天还会远吗?”
没毛病呀,现在也许就是黎明前的那个黑暗,最让人丧失斗志的时候,也许你再坚持一下下,光明就来了呢~
没毛病呀,现在也许就是黎明前的那个黑暗,最让人丧失斗志的时候,也许你再坚持一下下,光明就来了呢~