目录
我想了想,觉得有必要先列个提纲,这样整个文章内容描述才能逻辑清晰,大家也能看的简单易懂。那废话不多说,这次给大家分享的有以下几点内容:
1、入“坑”与填“坑”
2、跳过的槽
3、面过的试
4、诗与远方
第一部分 入“坑”与填“坑”
坑是打了双引号的,因为在我看来,入软件行业不一定是一个坑,这个“坑”字只是经常出现在IT从业者平时的言语声中。
入“坑”
第一次接触电脑是在我上初一的时候,当时中学课程中每周有一节所谓的上机课,实际上这个上机课只是一个形式主义,老师不会讲实质性的东西,大家有的干脆不去上机,有的就在机房里面打单机游戏,比如星际争霸、反恐精英CS局域网,也幸好学校的机器没有联网,要不学生不反了天。我呢,只要说有上机课,那是永远第一个跑到机房门口,等着机房开门。说说当时我接触到的IT世界,那时候网吧刚刚在我们那里兴起,盛大不得不说,旗下的游戏-传奇风靡一时,也是在那时第一次接触到游戏,其中还有段至今难忘的痛楚记忆,大概也就是“少不更事,幡然悔悟”的意思,这里就略过。也是在那时,我通过一个网吧老板的手机号注册了我人生第一个qq号码,清楚的记得当时的价格是1元1个,我想当时也是为了好玩,刚开始都是兴奋地疯狂添加天南地北的异性朋友,谈天说地,甚是欢乐,真是青春年少啊。
玩游戏、聊天只是娱乐,人有时候会自我反省,鞭策自我,我想我属于自制力偏弱,但是也能自我反思的一类人,毕竟我意识到游戏完了还是会饿,聊天多了还是会口渴,去网吧还是要花费money。也是在初中那时候,出现了网页制作的东东,忘记是不是frontPage?还有机房那个windows启动界面真是很古老,DOS系统,win98,软盘才几4M多,拷贝个东西那个费劲啊,网页编程、office这些都跟我没有关系,至少在初中那个时候。
入“坑”关键步骤-高考填报志愿。自己填报了自己认为喜欢的专业(因为考的压根不咋地),这里解读下那时候关于喜欢的定义:
也就提前接触了计算机
与初中在计算机上的“不务正业”有关
软件很火,工作应该好找
道听途说,想做一个牛逼的不要不要的黑客高手
yeah,就这样,大学就如愿地学习 计算机科学与技术 这个当年很火的专业,入坑位置很正!坐稳!起飞!
关于填“坑”的那些事
填"坑",我理解有两层含义。一层含义是我要硬着头皮把学业完成,不能搞个肄业或者没有毕业证吧,二证在我看来缺一不可,不能和比尔盖茨或其他半途退学的牛人相比。另外一层含义是在工作中遇到的各种问题,消灭之。
关于学业,感慨当时大学那些数学课程是怎么过的,数值分析、数理统计、高数?考试的时候纸条是必备的,想想篮球场上那些神一样的传球吧!只是不那么明目张胆。毕业时,包括现在的我觉得学校学的东西主要是一个抛砖引玉,自学能力与自我约束能力可能是大学最应该掌握的技能。
说说工作后填坑的事情吧。首先我来做个分类,别人挖的坑;自己挖的坑。 处理这两种类型的坑,我的总体原则是:坑是必须要填的,追究责任的事情让领导去干吧!
别人挖的坑,细分,故意的,非故意的。我想故意挖坑的非常少吧。要是故意的,拿键盘追着他满大街跑……。
自己的坑就默默地把坑填好就行,更要低调、低调、再低调,如果实在被老大发现,对于我来说,因为我属于厚脸皮的人,犯错不可怕,可怕的是不诚实,不反省,我会主动承认错误,反思,积累经验(最好是形成自己的备忘录,不管哪种形式)。也不知道从哪里听的,大概意思就是“遇到的坑越多,成长的可能性就越多”,但是我想说的是,有坑你自己不去填,都是别人帮你填了,那这填坑的技能你就学不到家了啊。
这里分享下个人理解填坑的必备方法:
理解程序业务逻辑,磨刀不误砍材工。一段代码只有明白要实现什么目的,才能更好地理解其中的设计要点,当然,很可能你直接想重写原来代码。
必须要debug,断点调试。你不会,别说你是程序员!
对于工期紧的,请不要自己闷头半天搞不成。风险及时报给老大,人家不会认为你差劲!!!退一万步讲,你是真的没有搞成。
第二部分 跳过的槽
毕业三年,跳过二次槽,俗话说的好,"好马不吃回头草",但二次跳槽却只经历了两家公司。跳过的槽,这里想跟大家分享的是个人对跳槽的理解,作为普通IT从业者,难免会经历多次跳槽,而每个人的处境可能都不一样,但是,会不会有一个特定的模式呢?
我从某公司领导处得到的关于跳槽的思想输出原话大体是这样:“在一个公司稳定时间长点好,公司虽然有再多这不好那不好,但是很多技能是你需要花很多时间去学的,比如你待不到1年就走了,换了环境,积累不会太多,也很难直接上升到管理层!”,在接收这些思想的时候,我当时大体是同意的。后面想想我为什么离开一个公司呢?我的情况符合行业主流说法,“要不就是钱少了,要不就是心里委屈了!”,所以,每个人所处状态不一样,就需要看你时下最需要的是什么了。简单来说,对于刚毕业的IT从业者,不要太在意薪资,而要看重平台,好的发展平台,跟学校一样,你考上不一样的学校,接触到不一样的环境与人,不一样的机遇与挑战。然后好的平台能开阔你的视野,都说视野决定高度,这话没错。
跳槽,除了上面的因素外,个人职业发展也是很重要的原因。每个人对自己职业发展道路应该有清晰的认识,当面对跳槽这种问题的时候就能很轻松地抉择了,因为你有了大的方向与目标。所以,做好自己的职业规划吧,把自己的人生当作自己导演的一部电影,电影的高潮自己来设计。另外要说的是,职业的规划有时候也要兼顾家庭的因素,这就需要在做规划的时候把相应的权重指标考虑进去。类似伪代码如下:
You you;//You("BoB",23,"男","北京","IT","25000元");if(you.hasGirlFriend() && you.girlFriend.positionInBeijingFlag()){//thatisexcellent!print("Do anything you what !Hello,beijing,hello kitty!");}else{//itisa hard choiceprint("bababa......");}
参考相关职业发展分析方法,什么SWOT分析,bababa~也许某一天会再跳槽,但是那是在我计划内的,只有做到这样,内心才不发慌。IT从业者的中年危机问题,跟跳槽的迷惘一样,也是没有明确的职业发展路线导致的问题,虽然我不是什么职场咨询专家,但是我知道一个问题就是,“人无远虑,必有近忧”。希望能鼓励看到我分享的所有人,内心有所触动,包括我自己。
第三部分 面过的试
面试官-是求职者进入目标企业的第一道关,只有在短短的面试时间内打动对方,才能有进入下一轮的机会,当然,这里不讨论靠关系进入企业的人们。在社会工作过程中,我曾经面过不少公司,也面试过不少候选人,企业-候选人的面试过程给我的感觉就是对商品的价值交换,而这个商品就是技术输出。企业当然想要物超所值的商品,而候选人也不会是傻子。所以很多大公司或者流程规范的公司都会有繁琐的面试流程,以此来全面评估候选人的价值,甚至会考量到一个人的价值观与公司文化是否匹配,而这些都无可厚非,你可以把它理解为老板的精明,this is business,和NBA一样。(可能平时喜欢看篮球,所以总是联想到这)
说说校招吧,“可塑性强!听话好管理!绩优股!”我想这是用人单位热衷于去各大知名高校花大价钱校招的原因吧。当然校招作为莘莘学子从学校迈入社会的第一步,必须要充分利用好。你不管是考研、步入社会、考公务员、事业单位、创业,都要做好自己的规划,面对千万条路,“条条大路通罗马”,而路却只能自己走出来。
实习面试
说说我的面试经历,曾经两度北漂,一次是实习,一次是正式工作。实习的时候的面试的是一家外企,公司在望京。那时我是在学校(非京),通过网上投递的简历,没想那么多,只是想找个单位实习,最好是北京的,以后去北京发展,见见大世面。投完网上简历后然后人家电话约我面试,我说明了我的情况,需要先去北京后,再约时间面试,人家同意了,我表示感谢。然后就踏上去往北京的火车,直接去的一个同学那里借宿,他也是自己租的房子,感谢我亲爱的同学们,没有你们,除了飘,没有了趣味。面试前一天,我恶补了公司的相关情况,包括公司发展概况、业务范围、文化理念等,还有我所应聘职位的相关要求,当然对于自己的简历内容我也是认真的核查了一遍,生怕有错字。
第二天就拿着自己准备好的,在旁边打印店打印的一块钱一张纸的简历,我也就打了一份。最后面试是成功了,可能是实习工作,技术上没有聊太多,主要是问问职业发展和兴趣爱好,还有就是聊聊公司、工作的情况,最终面试我的boss好像是新加坡的,全程跟我玩英语。我自然有点忐忑,但是我也厚脸皮跟她唠起来,其实内心是崩溃的,大概也就听懂她50%左右的意思,她可能看到我的自信心和交流的不怯场,因为后面实习工作是需要跟客户去打交道的。bingo,自然后面接到了offer。
实习的面试经历让我知道面试一定不能够怯场,表达要思路清晰,自信心非常重要!
工作面试
除了自信,实力更加重要。
正式工作面试过BAT中的公司,因为个人技术水平有限,而且实际工作中对深层次的原理性东西研究过少,基本被pass了,这是反面的例子。第二次北漂去的是一家互联网公司,面试过程中问的技术性问题偏多,后面才知道人家在公司的title是高级架构师。
现在回想起当时面试的场景,面试官问的技术问题都是实际工作中遇到的问题,当然也有一些理论性的东西。
记忆深刻的是,人家问的问题我有没接触过的,然后我想了想说,这个问题之前没有碰到过,我可以简单说下我的思考方式。然后balabala~
技术问题大体是这样的:
mysql分库分表
缓存的使用与原理
前端基础知识
java相关,引用与值传递等
基本设计模式
linux基本命令,ls, df,ps(然后我说我都是用的时候查,大家别学我)
ES,solr使用及lucene的基本原理。(我当时也就知道基本的,分词、高亮、ik,庖丁那些名词)
最后还是过了,还想说下HR这一关,这是非常重要的一关。因为它考量的不是技术,而是一个人的性格特色,或者说人的品性是否符合公司文化。他会问你些很现实可能你自己从来都没有思考过的问题,然后你要现场回答,我想HR问这些问题的时候也是非常真诚的。至于回答符不符合人家的预设不要紧,至少回答要是真诚的,眼神坚定。有些大公司可能会背调,包括以往薪资,以往工作表现情况,而作为求职者的我们来讲是要注意的问题。因为你的每一步,人家都有迹可循,不是不查只是看人家想不想查的问题。
作为面试官
也非常有幸能在工作中作为面试官,去面试候选人。(一般没事的小弟都会干这些事!),作为面试官,我会先准备问题。我习惯把在工作中遇到的技术点,抽象出来,成为问题点,比如前端界面与后端数据交互问题,或者在类、接口、方法中找些知识点看候选人是否清楚中间的概念,一个是考察是否实际做过,一个是对技术深度的理解。
总的来说,面试官还是希望候选人能给出面试官内心的预设答案。给到了那是满意,给到还超过预期,那是完美,给不到预定答案,那就只剩下基本满意和不合格了。
我认为,作为IT从业者,得有广有深,这是共识。业界流行的相关技术至少得知道是什么,名词至少能说出来,另外学自己热爱的pointer,毕竟一个人的精力有限。
第四部分 诗与远方
阳光、沙滩、美女。。。。。。
----每个IT从业者都会有自己的诗与远方。没有的,尽快找到它吧。
曾经一个朋友跟我抱怨人生苦恼,不知道活着有什么意义,我没有说什么,但是现在在我看来,他有了自己的爱人,有了自己的宝贝孩子,有了一个幸福的家庭,现在每天都充满了奋斗的积极能量。
我自己曾经一度迷茫,为什么我要独自一个人远走他乡,一个人在无聊的夜、苦闷的街饮酒解闷,当时内心孤独、彷徨,好凄凉,远离亲人,远离熟悉的土地,但后面我从中挣扎出来了。家里打电话来,“北方,天冷了,多注意身体!”,我当时顿时内心热热的,我还有远方思念我和我牵挂的亲人,有一帮一起长大的朋友,他们一直默默地支持着我,后面我很少再自己一个人苦闷喝酒了,所以,当时孤独失落时,想想亲爱的亲人、朋友,内心还是会有鼓舞。
长大了,意味着责任,曾经那么肆无忌惮地接收来自亲人、朋友的爱,现在要及早从迷茫中挣脱超凡,担当起属于自己的爱与责任,加油,我的IT同行们。
后记
从事java十余年,现在把架构师必须具备的一些技术总结出来一套思维导图和录制了一些相关视频,分享给大家,供大家参考。
需要相关资料可以加群:810589193,点击链接加入群聊【Java架构学习交流群】:https://jq.qq.com/?_wv=1027&k=5deQUBl就能获取
我把它分为六个点
一、开源框架解析:
阅读、分析源码是程序员最基本的码代码能力也是码农的根本所在,学习经典源码中所用到的经典设计思想及常用设计模式,能够帮你了解大牛是如何写代码的,从而吸收大牛的代码功力。在阿里面试中,MyBatis,Spring等框架的底层原理是经常会被问到的
二、架构师筑基:
百丈高楼平地起,基础也是非常重要的,基础不牢,自然不用谈架构。
三、高性能架构
性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,特别是阿里巴巴这样的一线互联网公司最为注重,因此想进入阿里,性能优化一定是要去深入学习与理解的一环
四、微服务架构
关于微服务架构的取舍
微服务是现在互联网架构技术中最火热的话题之一,也是我目前正在学习研究的方向。在面试过程中,面试官很少会问到关于微服务相关的问题。但作为一名开发者,一名有技术梦想的程序员微服务架构是现在必须要去了解的主流技术:
五、团队协作:
开发工具工程化
通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。程序员的战斗,往往不是一个人的战斗,我们如何在一个平台下高效的去重,进行代码review,对功能进行调整,debug,做到在统一的规划下步步为营,混乱的堆代码的过程中找到自己的记录。这一切都依赖于有效的工具。
六、B2C项目实战
项目实战
要想立足于互联网公司,且能在互联网浪潮中不被淹没,对于项目的开发实战演练是不必可少的技能,也是对自身能力的一个衡量,有多少的量对等于获得多少的回报。看似简单的一个项目需求图谱,其中的底层原理,实现原理又能知道多少?你搭建一个完整的B2C项目平台到底需要多少知识?这一切都是需要我们考量的。
还要说点啥,一直问自己怎么就一步步来到今天的境况,我想这就是每个人独特的人生轨迹!满怀感恩,过去的都将过去,珍惜现在每一寸光阴,我想,除了时间,这个世界上再没有什么是公平的了。(也许你会说生病了有钱人可以买时间,你要这么说,我也没办法。)
有需要这些免费架构资料和面试题资料的可以来领取!
资料获取方式加群:810589193,点击链接加入群聊【Java架构学习交流群】:https://jq.qq.com/?_wv=1027&k=5deQUBl获取Java工程化、高性能及分布式、高性能、高架构、性能调优、Spring、MyBatis、Netty源码分析等多个知识点高级进阶干货的直播免费学习权限及相关视频资料,还有spring和虚拟机等书籍扫描版