总结:
-
函数式编程其实是一种编程思想,它追求更细的粒度,将应用拆分成一组组极小的单元函数,组合调用操作数据流;
-
它提倡着 纯函数 / 函数复合 / 数据不可变, 谨慎对待函数内的 状态共享 / 依赖外部 / 副作用;
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
Tips:
其实我们很难也不需要在面试过程中去完美地阐述出整套思想,这里也只是浅尝辄止,一些个人理解而已。博主也是初级小菜鸟,停留在表面而已,只求对大家能有所帮助,轻喷🤣;
我个人觉得: 这些编程范式之间,其实并不矛盾,各有各的 优劣势。
理解和学习它们的理念与优势,合理地 设计融合,将优秀的软件编程思想用于提升我们应用;
所有设计思想,最终的目标一定是使我们的应用更加 解耦颗粒化、易拓展、易测试、高复用,开发更为高效和安全;
【坚持原创】: 笔者是一个工作三年多工作经验的小前端,平时偶尔写一些文章,写几个小项目,定期会总结,把近期的一些技术感想输出成文章,每一篇文章都是原创并且不求太多人喜欢,还是那句话,只要文章里面某个点对一些人有用处或者让你觉得能学到点东西,就很满意了。
2021 年上半年算是个人经历比较多的一段时间,正好写出来一些感想,给一些刚入门的前端同学,或者刚毕业的同学,或者对未来迷茫的前端同学,一些思路。绝不自诩为导师或者引路人,单纯的分享一下个人经验,个人总结,对你有用的话就看看聊聊,对你没用的话直接关闭就可以~
个人简介
| CSS | JavaScript |
| — | — |
| 姓名 | 小周同学 |
| 学历 | 北邮硕士 |
| 工作经验 | 3+年 |
| 履历 | 知名在线教育公司 -> Top3电商 -> 即将去的新公司 |
| Base | 北京 -> 杭州 |
| Github | github.com/luffyZh |
OK,从上面的个人简历来看,说好不好,说差不差,中庸而已。但是不多不少也是3年多前端经验,接下来就给大家聊聊个人对于这三年来的经验总结,给大家聊聊前端同学们感兴趣的几个话题。
关于跳槽
第一个话题,我们就来聊聊跳槽这件事。
在现今的互联网链条里,90后、00后应该是主力军(多为干活的,底层码农),互联网行业的跳槽我们都知道是很频繁的,也是一种常态。关于跳槽这件事,个人有一些小总结,欢迎大家来讨论。我这里从下面两个角度跟大家一起聊聊。
钱和感情
离开了学校,步入了社会,无论什么职业,互联网如此,非互联网也是如此,工作其实就是生活的一部分,牵扯到的都是各种利益相关的问题,因此,钱和感情这个话题在工作中是离不开的。下面几个观点,相信大家应该都看到过:
-
1 - 在互联网不要谈感情,呆的不开心就直接走就可以了
-
2 - 脉脉上人均百万,我比同龄人、同层人差太多了,赶紧跳槽拉平
-
3 - 谈钱伤你感情,不谈钱伤我感情
上述几个观点不代表我个人观点,只是用来引出论点:
- 什么是钱?
这个通俗概念我本来不太想解释,因为有点太俗了,但是从互联网来看,钱还真就不是简单意义上的???:Base + 期权 + 奖金 + 晋升空间
,这是我个人觉得的互联网人眼里的钱。
实话实说,钱???应该是大部分人跳槽的本质因素,我觉得古人那句话真的挺好的:钱是王八蛋。他不能衡量你在一个公司的绝对价值,但是它能让你看清你的付出是否和收入以及晋升空间成正比,从而看清公司或者生活的本来面目,比如互联网内部流行的 倒挂 和 薪资保密等等,都是和钱???脱不开关系的。
- 什么是感情?
感情分为很多种,简单来说可以理解为:为啥你不想跳槽离开这家公司。团队氛围好、领导 Nice、晋升机会多、公司福利好,以及应届生刚毕业入职的第一家公司等等,这些都是构成互联网人感情的几个要素。
一个公司,能不能给员工带来归属感,让员工对你有感情,这一点是很重要的,也是能不能留住人才的关键因素,毕竟生而为人谁都不只是为了眼前的馒头活着。
【个人观点】: 钱和感情总要占一样,如果一样都没占到,那么就可以走了。
为什么要跳槽?
关于上面的观点,我在这里来给大家做一个阐述(P.S.越写越觉得自己在写一篇小论文,正好高考刚结束,就当回忆高考了)。我想表达的是如果钱和感情二者都没到位,那么我建议大家跳槽,但是如果钱和感情有一样但是还想跳槽,那么就耐心看本章节小作文吧~
- 有钱没感情
顾名思义,公司钱给的很多(也可能是画饼),但是你对公司没有感情,没有感情是什么样的,团队氛围差?没有晋升机会?工作劳累?PUA文化?强度大、PUSH 等…如果存在上面一个或者很多因素,让你不开心的话,我们可以对比着来看看:
一方面,等几个月,看看自己的存款,如果发工资的时候上面的负面情绪一下子全没了,那么恭喜你,可以继续下去了,互联网不需要感情这句话就十分适合你,你其实只是没有找到舒适的浅水区而已,并没有所谓的矛盾,别跟钱过不去。【结论】—— 不建议跳槽
另一方面,虽然你很满意当前的薪资,但是你生活和工作每天都很焦虑,上面的各种事情都能让你烦心,无论是心理还是身体,你个人觉得到达了极限或者觉得自己要打破现状,出去看看,那么这个时候你就适合跳槽。一个已知的不满意的环境,和一个未知的新鲜的环境,肯定后者更有吸引力,同时跳槽所带来的增益(比如涨薪,比如新业务带来的成长和开拓眼界等等)都是比较正向的事情。只要略有一点存款足够空档一、两个月,那就别跟自己较劲。【结论】—— 建议跳槽
- 有感情没钱
有感情没钱这个可能是绝大部分求职者会遇到的难点,对一个团队有感情,有归属感,有想做的事情,有上升空间,但是奈何工资比较低(这个比较低当然是相对的)。我觉得很多都是看了脉脉那些年薪百万的 offer 比较帖子之后,或者新入职的校招生薪资比自己高被倒挂的时候萌生的想法。这个时候,依然要对比的来看一看:
1 - 是出于横向对比而产生的嫉妒心或者不平衡的前提下想跳槽,那么说实话,你跳槽去另一家公司,依然会存在现在的情况,明年的校招生依然比你钱多,脉脉上的大佬们依然天天吹 NB,你这小心态承受不住继续跳?那么你的简历就花了,如果只是因为这个,我觉得需要三思而行,毕竟你的资历在这个公司还需要积累也还有上升的空间。【结论】:不建议跳槽
2 - 如果继续下去单纯的是无聊乏味没有成长了,公司既不能给你带来技术增益又不能给你带来金钱收益,那么感情可以放一放了,毕竟生活还要继续,再熬下去可能就没优势了,直接选择一个待遇更好平台更大的公司,更适合你。【结论】:建议跳槽
【划重点】: 我强调一下,并不是鼓励大家跳槽,而是希望大家看清自己和当前的现状,我们高考政治总喜欢考矛盾这个概念,中国特色社会主义的矛盾我们可能感受不深,但是你个人在职业发展中的矛盾,是你切身实际感受得到的,如果你没感受到工作中生活中的矛盾点,那么我建议你安于现状。如果你清清楚楚感知到了矛盾,想寻求改变,那么好好准备面试,不打无准备之仗,一击必杀,祝各位 offer 拿到手软~,在你们没考虑清楚自己到底想要什么的时候,不建议冲动贸然跳槽。
技术成长
关于技术成长,应该是每一个有些追求的前端都挺看重的事情。我这边也不是什么大牛,还是那句话,不出彩也不掉队,就是中庸之道吧,给大家聊聊我个人觉得一个前端应该如何技术成长。
业务和技术
很多前端朋友聊天的时候,总是会提到,每天都在做相同的事情,复制粘贴,毫无技术成长,时间久了,源源不断的抱怨,没有动力,种种因素又不愿寻求改变,最后落得个很尴尬的地步,在这里我想好好聊聊业务和技术之间的关系。
- 脱离于业务的技术是没有实际意义的
这句话是我一直想说的,我们做技术的不服务于业务难道服务于想象力?你想做什么就做什么,那是自由开发者去做的事,你在互联网企业里,在当前社会中,你做的事是不能脱离业务的。你可能想说,我不想写业务,我想去底层架构想去中台,那么思考一下,底层架构和业务中台服务的是谁?不还是业务团队吗?说白了,他们的也是在写业务需求,只不过是服务于业务团队的业务需求。所以,我们开发人员不要总想着脱离业务,脱离业务去谈技术,那是没意义的。
- 不做业务的奴隶
什么是业务的奴隶?
举个例子,你有一个表单表格类的需求,你花费2天时间开发完了;下周,一个新需求还是表格表单,你又花费了2天;一个月后,相同类型的需求你又花费了2天。然后半年后你跟同事朋友吐槽,每天都是相同的需求,我都做烦了。恭喜你,业务奴隶说的就是你。 长此以往,你剩下的就只是复制粘贴和无尽的抱怨,能有成长就怪了。
我这里并不是影射谁,只是希望大家能脱离业务怪圈,想办法在业务中成长自己。
- 业务与技术是相互促进的,学会在业务中成长技术
那么如何才能不做业务上的奴隶呢?总的来说那就是,要在业务中成长技术,你的技术要反馈到业务上,我们的要求不是能开发完业务,而是开发好业务。我这里总结了几点:
1 - 做提升效率的事情
比如,上面提到的,相同的需求,你做完一次两次,发现共性了,我们的业务需求经常有这种场景,那么是不是能把共同点抽象出来,或者封装一个方法,或者封装一个 npm 包,甚至可以带动后端提供一个一整套完备的解决方案等等。那么下次这种需求可能就2个小时就开发完了,你提速的同时你的产出还能被大家看到,节省下来的时间你就能做其他事情了,从手动化到自动化,这就不是业务的奴隶了。
再比如,你每一次都写新需求、新系统都要重新搭建,每一次你都是直接复制粘贴原来的框架改吧改吧来用,那么是不是考虑做一个团队 cli 工具,可定制,适配各个场景各个需求的,这不也是提升效率的事情吗?
当然,有的下伙伴肯定就抬杠了,你节省下来的时间也会被其他业务需求所代替,依旧是业务奴隶,那么我想说,至少其他业务是新业务新需求,你还是可以继续优化抽象,如果最后还是变成了业务奴隶,那么参照上面的跳槽一节,里面有你要的答案。
2 - 做解决业务痛点的事情
业务痛点就是那些存在已久的大家都知道的,但是又没人解决或者不好解决的事情,建议大家要敢于解决业务痛点问题,敢于啃硬骨头。这么说吧,你解决了,可能领导会高看你一眼,绩效会很好,对你来说好处很多;退一万步讲,你没解决,那么这个问题原本就一直存在,谁也不会说你啥,无惩罚的“刷怪晋级”机会,何乐而不为呢。
可能有人问了,没有技术痛点咋办。我只能说一句话,玄学技术领域,不可能没有,如果没有,那就是还没发现,赶紧自己发现一个去解决~???
1 -> 3年 和 3年 -> ∞
我这边把前端的时间节点分成了两个阶段,当然,有的大牛可能出来就是大牛,这个我们不能拿来参考,我认为一个正常的前端应该都会经历这两个阶段。
- 1 -> 3年,飞速的汲取知识,业务中磨砺技术 —— 【广度】
JavaScript
-
js的基本类型有哪些?引用类型有哪些?null和undefined的区别。
-
如何判断一个变量是Array类型?如何判断一个变量是Number类型?(都不止一种)
-
Object是引用类型嘛?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?
-
JS常见的dom操作api
-
解释一下事件冒泡和事件捕获
-
事件委托(手写例子),事件冒泡和捕获,如何阻止冒泡?如何组织默认事件?
-
对闭包的理解?什么时候构成闭包?闭包的实现方法?闭包的优缺点?
-
this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?
-
call,apply,bind
-
显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链
-
创建对象的多种方式
-
实现继承的多种方式和优缺点
-
new 一个对象具体做了什么
-
手写Ajax,XMLHttpRequest
-
变量提升
-
举例说明一个匿名函数的典型用例
-
指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?
-
attribute和property的区别
-
document load和document DOMContentLoaded两个事件的区别
-
JS代码调试
-
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】