前言
周末,天气放晴,玩的还挺开心,过后,我像往常一样坐在窗台,看着电脑“发呆”,就不给大家分享技术干货了。给大家整理一份面试清单总结吧,都是一些基础的题,是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~当复习期末考吧。花了不少时间整理,在整理过程中也学到了很多东西,请大家认真对待每一题!
技术焦虑
现在的技术圈子很火热,任何技术点,任何知识,只要你肯搜索,都能找到资料。但是现在技术圈确实有一个不好的地方,就是贩卖焦虑。这种贩卖焦虑的点并不在于形式,而是一种普遍的心态。特别是对于那种知识点比拼的心态:“xx知道的东西好多,好厉害!我要向xx学习”。我一直宣扬,这种心态千万不要有。xx比你知识点多很多,但是不代表他比你强,比你厉害。程序员如何比拼强弱?要比拼的绝不是知识点的多寡,而是使用知识点的能力强弱。即如何使用你掌握的知识改变行业。
关于晨读,各种账号确实现在很经常发晨读,晨读这件事情,我自己也坚持了三年,现在开的群也在和几个人坚持发。其实我自己也知道,晨读这些内容恐怕没有几个人会看,大多数人恐怕就是浏览了下标题。晨读这个事情,本质是好的,它对收集和发送的人来说是最有利的,基本上收集和发布的人至少需要大致看过这些文章,这对发布的人是一种坚持学习的东西。而但是对于看的人,我自己也知道见仁见智。如果这些晨读标题引起了自身的恐慌和焦虑,我觉得绝对是得不偿失的。
前沿技术
聊聊前沿技术。不管你现在是学习什么前沿的技术,大致一句话应该是没有错的,你所掌握的技术,在你有生之年,是会过时的。这种过时的生命周期是从后端向前端逐渐缩短的。我这里的后端和前端的方向是以靠近真实用户的距离计算的。比如数据库,操作系统这种技术,距离用户最远,用户基本不会感知,他们可能几十年都不会过时,从mysql,linux大致就能看出来。再往前,中间件技术,缓存等技术,大致十几年把。再往前,后端服务技术,我认为生命周期应该是10年之内。再往前,前端技术,我觉得迭代周期应该是5年之内了。如果有工作超过10年的朋友,应该对我这个时间估计也会有所赞同的。迭代更新是伴随着技术红利的,这里的技术红利指的是新技术的培训,人员更新,市场需求等。越是更新换代快的,越容易抢占这个技术红利。在这个技术红利中,会有一波人才缺口流出,会有一波技术很强的人出现。但是,残酷的是,这波人才缺口,很多情况下是通过淘汰只掌握过时的技术的人员空出来的。所以越靠近用户侧的技术人员越需要跟紧技术迭代的脚步,否则一不小心就会被淘汰。当然也不是说越往后端越舒服,技术迭代慢同时也代表坑位固定,因为在同技术领域沉淀很久的老人会把及格线带的很高,所以基本需要沉淀比较久才能成为比较合格的人才。而且靠近后端的人才一旦遇到技术迭代,那么可能是毁灭性的,究其原因,恐怕一个是深入后端技术比较慢,一个是新的后端技术坑更少。
是不是所有的技术迭代都是好的呢?我的观点是肯定的。新技术的出现一定是为了解决某种痛点,或者填补某种空缺才会出现的。但是,大家往往忘记了,技术是为了解决问题的,有很多公司由于体量,技术人员储备等条件,根本不存在所谓的痛点,但是也莫名其妙引入了各种时髦新技术。技术都不是银弹,使用新技术,一定要承担新技术带来的成本和新痛点。衡量一个新技术引入公司的决策是否正确的标准,恐怕应该是业务是否得到提升。这里说的业务提升,两个方面,一个成本侧减少,一个收益侧增加。在我看来的很多公司,对于新的技术往往是为了革新而革新,所带来对公司业务上的伤害,恐怕更多于旧的技术。所以架构师的价值,特别是业务架构师的价值我认为体现在这里,对整个公司或者部门的业务,人员水平有一定判断,选择合适的技术,有时候,甚至于拒绝新技术的引入也是一个成功的决定。
技术人员的发展路线
可以再聊聊技术人员的发展路线。我认为技术人员的发展路线有两条,一条是改变技术行业,一条是改变业务行业。
改变技术行业的人,这类人我认为现在在中国应该是比较少数的。改变技术行业的人基本上恐怕究其一生,最多只能改变一个、至多两个技术行业。这种人,我认为可能必须有热衷于某个技术行业的觉悟。基本上我觉得各个语言的创造者,追随者算是这类人,各种数据库,大型开源项目的创造者、追随者算是这类人。这类人比如mysql的精深专家,基本需要在mysql这个领域没有什么解决不了的问题,而且对这个领域有持续的贡献能力。但是我这十年所见,确实遇到的非常少(可能是我的有限的个人经历所致)。
成为改变业务行业的人,我觉得应该是现在大多数的接触程序员所应该追求的。我们之所以有工作,是公司在某个行业希望有所建树,有所作为,所以雇佣你来做这份工作。如果你不能让公司在这个行业有所发展,那么恐怕,你很快会被公司淘汰。所以,这点是我对所遇到的工作几年之后有职业迷茫的年轻人说的,千万不要为了追求新技术而轻易换行业。任何业务,都有技术可以改变的地方,只是你没找到而已,没找到的原因,恐怕就在于你的浮躁。并不是人人都有机会追求各种高并发的CURD,但是人人都有机会踏踏实实写一些CURD,只要这些CURD在某个行业,某个领域确实是起到了作用,对公司起到了正面收益,那么你的工作就是值得的。代码无分贵贱,能让代码起价值的,就是你怎么使用这个代码改变你所在的业务行业。
所以,对于大多数业务行业的程序员来说,在几年期间,选择一个你喜欢的(或者你很看好的)行业,用各种技术来尝试,改变它,对自己也并不需要设限。就和实验室里面做实验的科学家一样。或许最后可能失败,但是所积累下来失败的经验,才是你真正的财富。而且据我观察,如果在某个行业真的长期沉浸思考的人,最后它自己就会变成这个行业的稀缺资源。各个公司所谓的技术总监,大都需要有这种特质。技术总监做的管理工作,在这个视角看来,是组织一批技术人员用技术改变行业。
那么如何才能正确的掌握Redis呢?
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
- 并发编程面试题汇总
- JVM面试题汇总
- Netty常被问到的那些面试题汇总
- Tomcat面试题整理汇总
- Mysql面试题汇总
- Spring源码深度解析
- Mybatis常见面试题汇总
- Nginx那些面试题汇总
- Zookeeper面试题汇总
- RabbitMQ常见面试题汇总
JVM常频面试:
Mysql面试题汇总(一)
Mysql面试题汇总(二)
Redis常见面试题汇总(300+题)