https://blog.csdn.net/weixin_41780944/article/details/79429769
从面试官的角度分享一些后端校招经验(作者说的极好要看)
https://blog.csdn.net/qq_34337272/article/details/80875016
除了手写代码和计算机基础,剩下的方面都是可选项,很多硕士应届生,研究生期间和导师做某个方向的研究,从来没写过后端应用,那只要基础知识很扎实,研究做的也不错就可以了。还有一些同学正好相反,基础知识比较差,但是动手能力很强,自己做过许多东西,这类就要求关于项目的问题回答的很好,表现出很强的自学能力才能通过。
项目的问题我举个例子,如果一个同学做过微信公众号的支付部分,那我会让他画一下微信支付的流程图,然后问从微信的角度考虑,设计流程时,如何防止用户篡改价格,如何防止重复支付,如果网络连接断开了,怎么获取支付结果,如何防止重放攻击等等。真的做过项目的同学,至少流程图是能画出来的,但是这远远不够。能够从微信支付的流程中学到支付 API 的设计思路,并且在自己设计 API 的时候能够用上,才算是学习能力强的候选人。
另外还有一个同学参加微软的创业大赛做了一个 App,比一般同学练手做的 App 完成度高很多。另外,如果有兴趣,自己钻研一些开源系统也是很好的加分项,比如有些同学精读 Linux 源码,面试官问不出极限,肯定会给很高的评价。
https://www.nowcoder.com/discuss/56158?type=0&order=0&pos=26&page=1
https://www.tianmaying.com/qa/317
提问:非科班,Java应该怎么学才能在校招中拿到好的offer? 匿名用户 于 3月9日
0 1
回答
转帖我知乎上的回答
我更多从招人的角度给你几点建议。
我招一个Java程序员,我大概会这样来考察一个人。
1、至少你得过了笔试或者网上的编程测试吧。面试机会先拿到。既然目标是比较好的Offer,一般还是会考察你CS基础知识的。去看看各个公司的笔试题,网上到处是。算法和CS核心课程你还是应该去复习的。
2、喜欢编程的人,大都会折腾个Github项目之类的,哪怕是个简单的博客应用,如果我看到你会去捣鼓这些东西的话,我会认为你是一个有编程热情的人,很加分。
3、有一两个做得深入的项目很加分,去争取参与实际项目机会,身边有这样喜欢折腾的朋友那就再好不过了。实在找不到自己去实现一个网站或者App,部署或者分发出来,活生生的东西可以增加说服力。找个项目创意还是很容易,没这方面Sense,山寨也行,练手而已嘛,做得好说不定成了创业项目。
4、除编程之外,有一两种你深入理解和掌握的技术,比如Java求职的话,你对Spring的整套体系甚至源码理解很深入可以大大加分。技术涉猎比较广泛的人,是比较受欢迎的。
5、赶紧找实习吧,实习进入好公司的门槛相对低一些,积累经历的同时,内推也更有机会。
6、你确实数学功底不错的话,怒刷算法也能增加一些机会。算法更多是用来考察逻辑思维和学习潜力的,如果你有编程竞赛背书的话,会大大加分;只是我出题时算法答得好,有加分,不多。对一般人而言,让算法别给你减分就行了。
综上,套用蓝海战略的术语,我给你的战略是:
在没有“名校背书”、“编程竞赛获奖”等价值点的情况下,在“算法”和“CS基础知识”这些价值点上至少要不低于竞争对手的平均水平,在“技术热情与好奇心”、“实战经验”这两个价值点不妨重点突破。这样的话有机会拿下一线IT公司的Offer。
如果希望想在“算法”这个价值点上寻求突破,参考上面所说的第六点。
想翻墙去北美,就忽略上面全部所说,算法是命门,可以看我一个同学的攻略:american-dream-of-coders
其它几个观点,供你参考:
关于非科班:
就编程技能而言,很多非科班出身的人都做得非常不错,从求职来说的话完全可以不输科班。
科班出身,一个优势在于学习了很多计算机专业的核心课程,这些课程的确是帮助我们建立计算机修养的东西,潜移默化地影响和提升我们的技术底蕴。就跟一个人看书多也能增加人文修养类似。法国人学数学都是一种修养,所以出大数学家。同样和人文修养类似,计算机修养对我们职业生涯的影响却并不是立竿见影的,大部分情况下可以说是不影响求职的。一个现象就是即使CS科班出身的人,最后往往也会发现实际工作中未必会用到学到的知识。我们要辩证地看待这一点。举个例子,编译原理可能你工作中从来不会遇到,但是深入学习过编译原理的人,对“语言”的理解一定会更加深刻,你学习各种语言(不特指编程语言)或者需要去设计一种描述语言的时候,你会对如何去构造、解析和解释一种语言会更加得心应手。甚至看待生活中的语言也会有全新的视角。
一个非科班出生的程序员,随着编程技能的精进,解决问题的深度和难度增加,肯定也会逐渐涉及到计算机核心课程中的东西,比如操作系统,高级的数据结构、编译原理等。这个时候其实所谓的非科班,在我看来已经是科班了,不过是闻道有先后而已。
关于学历:
名校背景找工作必然是加分的,在短时间内考察一个人,教育背景是对一个人学习能力和潜力的一个很重要的背书。
中下游211的非CS专业,对于稍好的公司来说,你在学历这个因素是略减分的。但这只是一个因素而已,技术热情、算法基础、编程语言的深入程度、实际项目经验这些方面做好,加权一下综合得分就上来了。从培训机构、专科到名校CS毕业生,拿到好Offer的人都有。
说到学历问题,我们来说深入一点。其实所谓的“综合得分”是一种最理性的判断。但是面试官往往很难做出综合的判断,甚至有唯学历论者,这不能全怪面试官,而是人的一个基本特质所决定的。
一个英国哲学家曾经说过:文明的进步就是人们在不假思索中可以做的事情越来越多。人的行为常常会被一些很局部的特征所触发,而这种触发很多情况下自己是意识不到的。这是社会心理学经典著作《影响力》的一个核心观点。拿动物来举例子,火鸡正常情况下会攻击臭鼬,但是一个能够发出小火鸡“叽叽”声的玩具臭鼬,却会让火鸡妈妈将其揽入怀中。
所以学历很多时候就是这样的“叽叽”声,在一部分面试官的眼里不自觉地就已经基于学历做了一个判断,“综合得分”可能并不起太大作用,而他们自己甚至没有意识到这一点。
我也看到过“唯算法”论者,我一个同学曾经遇到一个某知名顶级互联网企业的面试官,热衷考面试者算法难题,在一个很生僻的数据结构(即使ACM竞赛中也几乎不会出现)上纠缠很久,这个同学最后没有写出来被拒了。这个同学是一个综合实力非常强的人,即使算法上也是竞赛级的水平,但是碰到这样的“火鸡”也无奈之。他现在在另一家同级别的北美公司工作,这样的面试官毕竟少数,也不要太担心。
可能的解释是:这类面试官的经历让他们潜意识中对“学历”和“算法”有了较深的体会,甚至成为一种情结,在某些场景下就会成为一个极强的局部触发特征而影响他们的行为。
为什么我给你的战略里,提到了可以从“技术热情与好奇心”来突破呢? 其实也是对这样一种原理的应用。如果在面试过程中体现出来你热爱技术,喜欢尝试,涉猎广泛,往往容易成为一个触动面试官的特征。也举个例子,我一个师弟是个Java程序员,去面一家国内应届生薪资水平可能是最高的一个公司。面完后我问他情况,各种技术问题(更多C++方面的)他答得很惨,但是说完不久就被通知录用了。我要是面试官也是一定会录取他的。因为从本科开始他就折腾各种项目,你跟他聊天就看得出来是有很大编程热情的人,这样的人一定可以胜任任何技术工作。(他的竞争对手几乎是同级别教育背景,所以学历这项在这里不构成很大的优势)对,写到这我想到了Geek这个词,你应该让自己更Geek一些。不是留个长头发就Geek了,Geek体现在你Github账号的行为记录上,体现在你对各种技术的尝试经历中。
扯远了,最后再说一点。
关于第一份工作:
IT行业第一份工作即使不是特别满意,也不用太担心,积极努力总能达到目标的。继续举例子吧,亲朋好友搞IT的也无数,最不缺的就是例子:
-
A,专科学校,第一份工作月薪3K,做ActionScript开发,一年后跳槽页游公司,两年之后月薪已经到20K。
-
B,普通院校毕业,第一份工作在一个国企性质类的软件公司,Java开发,月薪5K,两年后跳到IBM。
-
C,普通学校,第一份工作非IT,某培训机构学习半年,iOS开发,入职顺丰,月薪10K+。
ABC有一个相同的特点就是有上进心。其实有技术热情,愿意沉下心来学习,普通资质的人工作几年之后,跳到不错的公司工作也是问题不大的。大一点说,各个行业也都是如此,CS转去做其他行业的也都有很多做的很好的例子。很多事情也都是分层跨越,不是一蹴而就的,步子大容易扯着蛋,这也是积跬步的力量。比如先找到实习,正式工作就有一半着落了;比如本科没考上名校,可能研究生就考上了;毕业没有进入BAT,小公司努力锻炼几年你就追赶上BAT的伙伴们了。