飞道的博客

Edgar--方法论-基础与快速学习能力

249人阅读  评论(0)

首先本应该一一感谢,这一路的改简历,指导学习的同学们和老师们,但是点名总是不好的,尤其其中一个大厂同学告诉我不要发朋友圈,哈哈!那就借用一句许巍老师的歌词吧

我那总沉默的朋友,你让我感觉到力量--《晴朗》(许巍)

写在前面–可以直接略过

面试的第一关,是自我介绍,我觉得要是本来是很好讲的,校园经历嘛。
比如说竞赛啊,社团啊。其中还考虑过讲项目,但是基于我简历项目说的比较多,而且他也不会怎么关注要应聘实习生的项目。
但是我尝试了很多次,毕竟我本科8年,这里面的故事怎么讲都不顺畅,还有一些讲多了就涉及到个人以及jz的事情。反正也对付用了一两回吧,但是效果自己这关总是过不去。

后来在跟另一位同学模拟的过程中,就很放松,就他情商真的挺高的(就是给我夸了嘛 哈哈哈),然后他说到了一个点,他说我总感觉你是不是有一个自己的学习方法啊,很朦胧,你聊一下。(其实第一个同学模拟的时候,也问我了,当时就是基操,说的是,看视频啊,写博客啊,什么的)

我当时自己都 感觉朦胧,学习方法每个人都有一套啊?
另一个方面,你觉得面试官真的在意你的项目吗?他只是想看你的思维逻辑,处理问题的方法,学习方法。
然后,然后我们就开始商业互吹了。。。。。


方法论前序

说道学习方法,大家都有一套基本相同的。
看视频,背题,背算法,刷算法,看书,包括我要讲的都是大同小异,也看个人的理解和基础程度。所以说到这就有两个关键词,个人理解程度,个人基础知识。我简化为,基础和快速学习能力。

这边在说下自己的方法之前,说下自己对后端工程师的理解吧!

  • 首先我们是跟数据流打交道的,就是跟数据打交道的。
  • 数据指标:怎么读取最快、最安全、存的时候什么形式、数据怎么带宽最大等等吧,

方法论这个东西,单说是在是太TM枯燥了,一会容易给我自己说没
上实例

说说string和stringbuffer、stringbuilder的区别

常见面试题,有的说就背就得了,也是一种方法吧。

1.看底层,底层其实一点不神秘,一定要知道他的底层是什么实现的
char数组啊

2.string不可变的原因,上篇文章说他是用final关键字修饰的,这就是底层告诉你的,不可变的原因
3.另外,两个string的线程安全问题,直接看add和扩容,一个有syn关键字,那他就是线程安全的,一个没有就是线程不安全的(暂时的理解,简化版,如果就是原子性的操作,那也不用加syn也是线程安全的,说这个意思)。
4.这些都是常见的,然后我同学问我,string呢线程安全吗?其实我当时没敢说,我朦胧的感觉就是线程安全的,fianl嘛感觉很强,即使多线程的话,他也每次都生成新的。后面查了一下官方的说法,不可变都是安全的,但是我觉得我这个理解还是在正路上。
而且一想到final,我觉得最应该想到的另一个关键字就是static。
然后又是单例模式里面那句自动生成,然后你想到单例了吧,懂一点spring的就会想到默认单例作用域,那单例的好处呢?(当时他继续往下问的,说实话我没看到过这个好处,因为我也就是简单了解单例模式),我一想static,全局一份。。那就balaba,全局都用啊,直接加载,公共场景下的应用,当时说了这些吧。

5.然后就是再通过这里面的一个总结,看关键字理解线程安全,所以说hahsmap啊什么Linklist啊,一通百通!
6.看看java还有哪些东西用了static等等,什么数组什么的你也继续往下建立网络啊
看不懂的时候,一个细小细小的点去看
从数组开始思考这个东西,很多东西,尤其是后端的东西你要从数据结构去理解这个东西。最早因为我,到现在我算法也不行,但是算法和数据结构真的不是说面试,或者什么场景的一种处理方案,更多的是一种思想吧。
如果说小的点都没有看懂的话,我想你该反思基础了
但上面不是说,我又鼓励大家去开始死记硬背东西了。
我刚开头说的基础,不是说你要有很强的计算机基础吗,而是你要对这个世界一些行业有基础的了解。
不是在说建网
上面说的,并非要表达建立知识网络的重要性。
我要说的是,先有下面这种方法论,你自然就会建网络了,这是有先后顺序的。


方法论正文

还是说前序里面说的两个重要的能力基础和快速学习能力。我觉得这是大厂真的看重的两点吧,只是说有时候这个因为模糊嘛,他是通过你的各项相关指标去看的。
你从事一个行业,你要知道相关的基础点在哪里。
厨师,做菜,–不了解不说了
互联网行业变化快,所以快速学习能力是必须的,他来自于你对基础的理解。这是大厂看中的嘛,显而易见的。但是我个人的理解,是基础和学习能力,第一不是剥离开的,第二不是相互依赖的特别紧密,不是充要条件。
这个基础是你,要了解这个行业的基础要求,就像我说的后端的基础,就是他要干啥!你在这个基础中学到的不仅是知识,也不仅仅是这个知识能干啥,是你从一个基础小点,去体会这个里面的学习思路,去构建你的学习能力,去提升你的快速学习能力。
比如说,那几种数据结构是用来存数据的啊,他们之间有什么区别啊。
或者再基础一点,你画画啊,我相信图形理解这个基础你应该是有的吧。
通过你的常识再去带入进去。

有了你这个快速学习能力,你再去学习一些基础上面的东西,在这个过程中,再去形成一套新的适用于这一个阶段的学习能力。比如说你了解到了很多数据结构了,好,下一步去想,去查他在那些场景下应用了,那些接口中应用了,那些框架中应用了。
比如说,现在知道,key-value这种结构了,那你一看redis是这样的,有一种索引也是这样的,这个时候如果你真的了解,hash或者说key-value这种结构,你就知道了,这个场景是为了等值查询的性能最好
个人瞎编最高境界实例
昨天的时候,第一个同学临时问了我一个,说Nginx了不了解。
我又硬着头皮说了解了(不太推荐这种,瞎说啊,其实是 听过负载均衡这个词的,但真的只是听过这个词)
他说那你说下,负载均衡你的想法是什么,(前提他说流量很大的情况下,然后我说用Nginx)。
我使劲的想,第一是用ip地址做key值,然后用hash这种散列的算法均匀的打到每个服务器上(后面查了,其实轮询就可以了,但是同学也没纠正我)他说到ip就可以了,然后我又结合实际情况,比如说有的服务器牛逼啊,能力越大越大责任越大嘛,然后我说往这种服务器上多大点。(给自己挖坑了。。)他说那靠什么呢?
我想了下一个词,权重!(昨天晚上看的相关知识还真是权重)
反正当时我也不知道怎么想(应该还是,脑子里有hash的感觉呢,比如说我们这个算法,他hash的话他,不一定能做到均匀,他落得多的地方,我们就把那台机器换好一点,乱起八糟的想了一些吧)的说这个词,就是一种潜意识里面的数学思维吧。

简单总结一下
1.观察世界,观察行业,观察底层代码(没有代码基础,观察世界的基础还是有的吧)
2.进入切入点,就是他们的各行各业的目的,基础目的啊
3.抽出特点,用你自己的理解建模,画图,建网络(已经进入快速学习阶段了),从你最能理解的开始,先别管难的东西
4.循环,继续观察下一个阶段的底层,然后循环
大概是这样吧


技术方面就简单了
这个技术为啥出现,干啥的(应用指标)
用于什么场景下,上下游的数据是什么样的(输入输出指标)
用了哪些基础数据结构和算法(性能指标)


后序

当然,上面的一切,对我后续是有帮助的,最直接的就是我改了我的自我介绍了嘛。哈哈
有一点我想讲一下,我上面的方法,他仍然是一个方法论,是我自己的,可能仍然不适合你。很多东西只有真的投入进去了,才会有自己的方法,前提是自己热爱!
所以有一句话,也送给在编程路上成长的我们
许巍老师(个人非常喜欢),送给年轻的地下歌手的一句话(我觉得处境挺相似的),他是借用The Beatles一句话。宇宙中一定存在一个巨大的能量场,核心就是爱。
最后再次致谢,所有的路上的小伙伴!兜兜转转八年了,终于重新走上这条道路!谢谢每一个带我入门的老师,谢谢!

如果你真的热爱音乐,你一定会成功的--许巍

转载:https://blog.csdn.net/notcode11/article/details/113738692
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场