【转载】B 道选手

几年前,我参加了一个游泳训练营。

所有人在一个泳池训练,按照水平分在四个泳道:A 道(游得最快的人)、B 道(次快)、C 道(次慢)和 D 道(最慢)。

我从 D 道开始,接受了大量的指导。周围的人都对我很好,我慢慢进步,终于进入了 C 道。那组的人也热情欢迎我。

但是,我注意到,旁边 B 道的人并不像 C 道那样友善。A 道选手都非常友善,慷慨给予鼓励、表扬和提示。

我怀疑这是普遍现象:A 道、C 道和 D 道的人都很友善,大家几乎都乐于助人;B 道的人则是对 A 道和其他 B 道选手友善,但对 C 道和 D 道则不然。

因为我后来发现,其他运动领域也是如此。那些仅次于顶级选手的运动员,往往对不如自己的选手很苛刻,害怕别人超过自己。

学术界也有这种现象。真正伟大的研究者慷慨而热于助人,许多普通水平的研究者也是这样。然而,那些有一定知名度、但又没有做出顶尖成果的研究者,对不如自己的人就不友善了。

当你是最好的 A 组时,很容易表现得宽宏大量,你确信自己会有成果,这让你安心无忧。

当你处于平均水平或低于平均水平(C 组或 D 组)时,表现得友善也很容易。远离顶尖水平,意味着竞争压力不大,所需要付出的努力可能也不大,你会有一种”放轻松”的心态(反正我到不了顶峰,就当作玩呗)。

那些仅次于优秀水平的人,感受到最大的竞争压力。你离顶峰如此之近,追赶却又艰难无比,放弃又不甘心。最令人沮丧的是,没有人记得第二名。同时,后面的人还可能超过你。所有这些因素,都可能导致一种不友善的态度。

如何做一件事

最近发现自己做事,有头无尾,有始无终。比如说健身,看了一些视频,买了一堆装备,去了几次,就慢慢频率减少,直到不去了;准备看看机会,做了简历,制定了复习计划,又慢慢没有了下文了;还有好多事,也是类似。

于是思考可能的原因,推测,是对要完成的事情没有一个清晰的认识,没有想清楚这件事做成之后,我是一个什么样的状态,周围的事物是一个什么样的状态,周围的人会是一个什么样的状态。

技术名词积累

Fail-Fast机制

fail-fast 机制是Java集合(Collection)中的一种错误机制。 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的结构进行了修改(增加、删除),则会抛出Concurrent Modification Exception(并发修改异常)。

Java魔法类:Unsafe

img

如上图所示,Unsafe提供的API大致可分为内存操作、CAS、Class相关、对象操作、线程调度、系统信息获取、内存屏障、数组操作等几类,下面将对其相关方法和应用场景进行详细介绍。

解决线程同步问题的思路

  1. 互斥同步
    1. 加锁:synchronized 和 ReentrantLock。
  2. 非阻塞同步
    1. CAS
    2. AtomicInteger
  3. 无同步方案
    1. 要保证线程安全,并不是一定就要进行同步。如果一个方法本来就不涉及共享数据,那它自然就无须任何同步措施去保证正确性。

Java开发面试准备

软件开发工程师的技术面试,一般分为三个部分:编程语言基础知识(俗称八股)、编程题、项目经验。

这篇记录下如何准备面试。

一、八股

不错的资料1:

https://www.pdai.tech/

Java 全栈知识点问题汇总(上)

Java 全栈知识点问题汇总(下)

不错的资料2:

Java Guide:https://javaguide.cn/home.html
小林图解:https://xiaolincoding.com/
On Java 8:https://github.com/rocLv/OnJava8
cs-note:https://cyc2018.xyz/

其实上面这些资料都挺全的,从入门到架构,都很详细,选一个自己喜欢的风格,认真复习即可。

二、算法题

刷题有两个方向:

建议先按照知识点刷,先过一遍考点,整体复习一下,之后可以看看高频题。

三、项目经验

看看别人的面试经验,根据他的项目问题,思考自己的项目中遇到过什么问题,如何解决的。

(面经建议现搜索)

这里提供一些问题作参考:

  1. 讲项目
  2. 再讲个项目
  3. 平时读什么源码
  4. 对XX领域架构了解吗?(XX=电商、支付、物流)
  5. 常见的限流算法有哪些,你们系统中是如何应用的?
  6. 你的系统如何保障稳定性?

2024节后上班第二天

节后第二天,坐在工位不知道怎么开始干活,感觉要做的需求收益很低,但又不能不做;想看看机会,又不想在工位明目张胆,坐如针毡,非常难受。百无聊赖,写点东西,平复下心情。