只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  自学编程的人,都是怎么找到第一份软件开发工作的?


自学编程的人,都是怎么找到第一份软件开发工作的?

发布时间:2019-07-19 20:04:16  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
招聘要求中的那些什么多少年工作经验啊,都是为了压低你的工资用的,你愿意被压低工资的话,你就直接投简历,然后被压低,然后就进去了。多容易。
自学编程的人,都是怎么找到第一份软件开发工作的?招聘要求中的那些什么多少年工作经验啊,都是为了压低你的工资用的,你愿意被压低工资的话,你就直接投简历,然后被压低,然后就进去了。多容易。如果学历不能证明你的价值,就用工作成果,开源项目也好,低价打工也好。

我以前有个同事,十多岁在重庆某工厂焊电路板的同时自学编程,利用每天下班后的时间免费帮一个公司干活,后来顺利获得该公司的职位。90年代重庆最早一批通过高级程序员资格考试的人(是的,那时程序员是一种职称,有证的)。之后读了北大计算机硕士,进微软,在阿里云带团队负责计算平台网络模块,yy上市前两年加入该公司,昨晚还用他团队刚做的网络电话跟我聊天。

2016.6.25更新
最近一个礼拜的加班,恰巧今天下班早,就花时间更新一下,没想到距上一次更新正好一个月哈哈,好巧。
分享一些我自己的心得,新手们可以仔细看看,大大们权当看故事吧。
首先前端的内容挺爆炸的,这个不可否认,各种框架库满地飞,我来谈谈我的看法吧。首先初学前端的人html,css和js这三个基本功先开始学那是肯定的,html+css估计快的人一个礼拜,慢的人一个月就可以模精品出大部分静态页面了,这个学习可以跟着codecademy学,或者按照另外一种方法,就是看w3c的教程,我的意思是第一遍先慢慢的有啥标签啥样式都跟着试一遍,第二遍就是快速的过一遍,主要记得有哪些功能即可,比如你只要记得我想要一个按钮,似乎有这么一个标签专门是写按钮的,我想要字变颜色,似乎有一个样式是变颜色的,这一个过程是让你明白,你能做什么,顺便帮你再梳理一遍,然后就可以模精品着做了,还记得我第一个模精品的是百度首页,足足话了我一天的功夫哈哈哈。不用过多的去关注html5和css3这些有点虚的东西,只是一个版本而已,作为新手只要看看html5有哪些规范,多了哪些标签,多了哪些新的样式能干什么就行了。
js的学习我因为之前学过四个月的java,所以对一些基本的内容都跳过了,这里面书推荐jsdom编程艺术,网站英文依然推荐codecademy,中文推荐ife吧。视频也可以看,不过推荐视频看项目实战,不要看他们的基础教程,因为基础教程永远是以官方文档和书作为第一资源。对于新的东西你要明白,他们诞生的目的不是去给我们这个职业增加难度让我们学着玩看谁学的厉害的,相反是帮助我们的,他的目的是解决我们当下的问题的。当你写js发现为了加一个事件而要去兼容各个版本,为了取一个dom要输入一长串的document,getElementbyId()在想有没有解决办法的时候,恭喜你,你是这个时代需要的人——懒人,并且已经有人去帮我们成功的偷懒了,那就是jQuery,而当你使用jQuery被jQuery神奇的魔力所折服的时候你的好奇心开始了,想研究一下究竟这jQuery是如何实现这神奇功能的,于是你开始看起了源码,这也许你是第一次读这么长的代码,但我要恭喜你,你离优秀更近了一步,要知道作为程序员,读代码的能力有时候甚至比写代码更重要。你会发现jQuery取dom原来是用正则的啊,嗯,这个方法不错学习了,下次我遇到类似要取东西的时候也用正则,你看,是不是又学习到了新的内容。当你发现写的css在各种屏幕下总是不能很好的表现,你在想有没有什么布局可以灵活的在电脑和平板手机灵活的变换的时候,恭喜你,你又get到了新技能,bootstrap的栅格化布局解决了你的问题,于是你用久了又产生了好奇,开始研究bootstrap的源码,发现了lsee和各种媒体查询等响应式布局策略,恭喜你,你离优秀又更近了一步。这一切的一切都是那么的水到渠成,不需要你去刻意学习。对于新的东西,先看看他是用来解决什么问题的,你有这样的问题吗,没有,那就了解一下,有,那么就学习一下,很简单。至于angularjs,react,vue等等,他们并没有那么高大上,那么遥不可及,只是他们所解决的问题对于现阶段的你来说都是个问题(此问题非彼问题),因为你现在的水平根本遇不到这些问题,你也不知道这些问题到底是个什么玩意,所以不要感到迷惑,等你遇到了这些问题,那么那些框架你就会自然而然的去学习去使用了。只要记住,跳出舒适区,拥抱新事物,做一个偷懒的人,不对,是做一个会偷懒的聪明人。好啦太晚了,我要睡了,各位晚安。

2016.5.25日更新
针对有人私信我学习方向的
其实我自己也会经常迷茫,也只是一个小白而已,而且非常白,因为没有受到过系统的专业教育。
我能给的初学者的唯一建议就是,目标驱动,或者说项目驱动,给自己一个你想做的东西,然后去把这个任务拆解,分成一个一个小任务,然后去一个个学习完成他。
你也可以反过来,找一个想学的技术,然后想想利用这个技术能做什么,然后就根据你要做的和你要学的去做吧。
---分割线
我是如何从一名文科生成为程序员的

准确来说,是从一名轨道交通运营管理专业的应届生(其实还差2个月毕业),成为了一名前端工程师。
这篇文章我每天晚上都想写,每晚做梦都想写,为了让自己不那么浮躁,我一直告诫自己,努力学好技术,什么都不要想,不要看钱,要看前。
本以为我会在今年年底实现我的大业,也想着在今年年底开始找工作,先在地铁工作一年再说,可是没想到,一切都是这么突然,在2016年的五月初,我提前终止了。

一点点回忆 迷茫

还记得在15年中旬,那时候正是我一段迷茫的时期,对于销售和技术,这两个我都深爱的方向,一直都不知道该如何抉择,折磨了我很久。想学技术觉的技术踏实,可是看着我大学几年的工作经历,明显是一个销售的模子,心里也一直幻想着我西装革履侃侃而谈的样子,可是现实很无奈,销售对我来说是一个不可控因素太高的职业,我害怕自己很努力可是到头来却一无所获;但是技术对我来说除了稳之外无一点优势,因为我从没接触过。这期间蕾蕾给了我很大动力,也让我毅然决然选择了技术,并以计算机作为我的职业发展方向。

我认为,以技术为方向的职业方向是最容易获得成就的,因为他需要的就是你在一个领域里不停的钻研。

小白

刚开始编程对于我来说就是零,我傻的跟一张白纸一样。好在我记得有张图书卡,打算着等双休日去图书馆借本计算机的书来开始我的大业。

还记得我打算去图书馆的前几个晚上,每晚都很兴奋,激动的心情根本无法入睡,估计就是从那个时候开始,我的睡眠就开始不怎么好了- - 反正每天晚上我都要思考好久人生才能睡着。

我读的第一本关于计算机的书,具体名字忘记了,隐约记得是什么计算机导论,反正是一门大学课程配套教材。看之前我还特意去网上攻略了一下,听说入门书是挑薄的,越薄越好。拿回家后我真是爱不释手,洗洗手,正襟危坐,打开书认真的看起来,并认真做起了笔记,忘记是从第几天起,那本书就不知道跑哪去了,具体笔记本在哪,我也找不到了。

车祸——是福也是祸

很巧的是,在我终于找到那本书,把那本书还掉,从图书馆回家的路上,被车撞了。。。有点尴尬,是不是上帝在跟我说:“小伙子,你居然敢不看完就还书,看我打断你的腿”。还好当时我电瓶车没电我骑的很慢,索性没什么大碍,只是要拿绷带绑着,我记得那时候正好是我暑假的开始,妈的,看来整个暑假要在家待着了。

这两个月,我看了两个月的java视频,到现在还记得看的人是毕向东,真心推荐,毕老师的教课方式真的是简单暴力,反正那段时间看的我整个人都变的搞笑了哈哈。

后来找到了网易云课堂,上了翁凯老师的java课程,信誓旦旦的交了五十块钱费用,(这五十块钱就是如果你坚持通过了考试,就给你一个毕业证书,如果你没有,五十就是惩罚)。一开始跟着做感觉没什么问题,到后来越来越难,这也体现出我暑假里光看视频学习的短板,理论还行,实践是渣。不过我也是迎难而上,期间还得到了浙江大学给的一个奖品。其实这个奖品还是有水分的,当时是这样评分的,做一个游戏,大家把自己做的游戏放到一个讨论区里,参与该课程的学生可以给讨论区里的游戏点赞,谁的赞多谁就能得到一个奖品。看知乎让我明白了一个道理,就是每个人都喜欢听故事,我的作品如果只是冰冷的作品,那么肯定比不过他们,于是我在提交作品的时候叙述了我的自学经历,想引起更多的共鸣来让大家点赞,当然,结果也如我所料嘿嘿。但是最后的java考试,因为跟我的电工证有冲突,所以就没能参加,五十块钱都打了水漂。

入坑

反正不知道学了多久,java这种长半衰周期的编程语言让我再一次感到了迷茫,后来听人说非科班出身可以做前端,前端更加容易,于是我就这样入了前端的坑。

现在知道了,没有容易的,都是坑。从一月份开始,从html到css一点一点,好在我后来找到了好的学习方法(关于学习方法可以看我的博客——【我说学习】板块),参加了百度前端的课程,也巩固了我的css,进入了下一个环节JavaScript。

好吧,学了JavaScript跟其他编程语言并无两样,也是一个完整的编程语言啊,不过它的弱类型什么的一开始用起来还确实不习惯,但是它既可以函数式编程,又可以面向对象,看起来更具有灵活性一点。不过好在它写的东西可以直观的在网页里看到,给了我更多的反馈,也给了我更多的动力。

这期间我停止了博客,转向把我的总结写在印象笔记里,因为写给自己看,排版什么的就很随意,也节省了更多时间,至此我的印象笔记内容大约有一百五十多条吧。也把我的方向从单纯的学编程,分散到学习如何学习(很重要),以及英语上来。对于一个人的不可替代性,外语能力绝对算一条,因为它不是你一朝一夕能够学会的,不过目前对我来说够用就好,现在已经可以看原版的编程书了哈哈。

我的时间安排

其实没什么,我的时间安排就是充分利用我的一切时间,反正从15年中旬到现在,我基本没看过电视,空余时间不是学习,就是看看ted之类关于心理学或者如何更好的学习之类内容,偶尔跟朋友出去玩玩。

这看起来挺简单,一般人刚开始还真的挺难适应的。在一个没有人督促,没有人陪同,没有人引导的前提下,我的学习就像是在漆黑的山洞里探险,一开始我甚至连灯都没有,想看看自己都看不见,因为我根本不知道自己学习的怎么样,对不对,哪里需要改进,哪里需要巩固……

这对于自控力,自我管理,自学能力以及耐心都是一个考验,好在这个考验我暂时通过了。

第一份工作

就在16年的5.2号,也就是现在,我找到了一份前端工作。一切都起源于我在苏州前端群里面的一句发问:“请问xx你们招前端吗?有什么要求?”机缘巧合让我遇到了高先生,他是我的贵人,通过短短的聊天我知道,他不是一个看中当下的人,他看中的是一个人的潜力以及后期爆发力。而我很有幸的,成功转型,高先生以及贵公司给予我的信任,我一定不会辜负。以后当别人问我的职业的时候,我会自豪的告诉他
写代码的

但是我会紧接着告诉他第二句话

code change the world

15年6月底在深圳走投无路,决定自学编程试试,先从大学时凭着自己兴趣看过一点点的数据结构开始,当时给自己定目标,十天时间内,我就一心一意的看这个,如果能够学进去,我就学,学不进去,就再考虑做别的。我学到7月十几号把严蔚敏的书上算法都实现了,发现对混口饭吃并没有卵用,于是开始学JAVA,学到10月底,开始找工作,在深圳面试了10几家单位,上来问,你有工作经验吗,没有,你是科班出身吗,不是,你培训过么,自学的。没人要啊,后来有个北京的单位愿意要我,在我把深圳都处理好准备去北京的时候,机票都买了,人家给我发一条短信说我不用来了,结果我再也联系不上这个公司了。家离北京不远,在家呆了三四天,又找到北京另外一个公司,愿意要我,一个月5200,11月10几号开始上班,干了一个月我发现,妈的赚10000块的人和我干一样的活儿,我找老板给我加钱,老板不鸟我,我也开始不给他好好干了。不出意外,到1月刚刚过完新年没几天,我让开除了。我又开始找工作,这次我学乖了,我和人说我工作经验有一年,面试我没什么问题,于是拿到了一个10k的工作,一月10几号开始上班,鄙人现在在苏州,在这里,我能提现我的价值,头儿也这么觉得,三个月试用期缩成两个月了,现在过的还过得去,仍然在坚持学习中,想将来有更大的发展,算法导论看了400页,csapp看了260页,想着将来能够进入更牛逼的公司,做更牛逼的程序员,今年30了看了很多回答,根据题主的情况,微软亚洲研究院、腾讯的经历,还有名校博士出身的,动不动CS(我们只知道这是游戏),不太适合题主了,你们应该给题主出出主意,别光顾着显摆,这样除了能吓尿题主,对题主或者题主这样工作3年以后自学编程找工作的人来说,一点帮助都没有。

题主这样,即使学好了,软件公司的HR多半不会瞧上一眼,所以面试机会基本没有,所以必须寻找各种面试机会,才能使自己的才能展现出来,才能有机会进公司。

给题主出三策,不用说是上、中、下,所有对策的前提是必须学得扎实,努力独立完成一个比较像样的项目,其次认真写好简历,工资么要求低点,目标:小公司(别灰心,只是开始而已)。


上策,
在亲戚朋友同学同事中找熟悉软件公司的人,那怕是亲戚的亲戚,朋友的朋友,同学的同学,同事的同事(错了同事的同事还是同事),一般如果有这样的人,那怕出于面子,也会给个面试机会,这个时候,只要能力,就可以,工资要求低点,毕竟这一行,换工作方便,积累一年工作经验就可以换公司,工资就可以恢复到和你能力一致的水平了。

中策
安装好自己开发的软件,相关源码及开发工具带上,做好简历,换件精神点的服装,到人才市场去,主要是去计算机相关的专场招聘会,现在软件互联网企业到人才市场招聘不多,但还是会有企业去,一家一家去找招聘人员说明,不管大小,态度诚恳,只要有实力,把自己的情况说清楚,肯定会有企业对你的印象深刻,会有企业让你参加面试,一场不够两场,只要足够诚意,足够水平,大中企业不敢说,急用人的小企业肯定是可以的,人家到人才市场去招人也是因为急着用人。

下策
下策,就是包装简历,写一家小公司10个月的开发经验,然后去投简历,简历只投小企业,毕竟是假简历,小企业运作不规范,好人才也招不到,应该会有企业要求面试,只要能力过关,就OK了,这是现在不少培训机构教唆学员做的事。但事关人品和道德,可能会让你一辈子都会留下污点,所以称为下策,慎用。

在你学得不错的情况下,关键就是面试机会,要创造一切条件争取面试机会,有面试就成功了。

-------------------------------------------------------------

更新:
还有,你想学.net,这个选择不知道出于什么考虑,如果没有特别的考虑,还是建议学JAVA,或者前端,毕竟企业需求量差很多,JAVA和前端对于人才的需求比.net大多了,应用领域也更为广泛, 可以参考java的就业前景如何? 而且JAVA学习,网上的免费学费资料也更多,更容易学习,包括视频、源码等,懂JAVA的人比懂.net的人多得多,所以找个帮你的人也容易。

至于要学多久,这个因人而已,毕竟每个人的学习能力,每个人能得到的帮助,每个人的学习环境不一样,所以,可能半年,有可能一年,可能二年,可能...,可以参考java初学者,如何学习java?

-------------------------------------------------------------

2018年3月7日更新:

文章最后有福利,慢慢看,别着急

================================================

我本科专业是政治学,28岁开始学习编程,29岁找到工作,现在马上30岁。现在一家互联网创业公司里做 Python 后端开发,写了非常核心的后端组件,也完成了公司90%的自动化测试,简单的、难的项目都参与过。其实我是编程弱鸡,仰仗同事帮忙,这一年学了很多。

我清楚,从自学编程到找工作,这是一个很痛苦的过程。

从学习第一行代码开始,你就很清楚自己和科班程序员有巨大差距,随着学习深入,会发现这个差距之大,以我们普通人的资质和勤奋水平,真的很难弥补。及至你终于鼓足勇气找工作,却发现竞争对手全是你仰望的『科班选手』(在我这个岁数,还会发现他们都比你年轻),会气馁,会沮丧。

心里默默念叨:真的没什么优势啊……

转行前,我在深圳一家互联网公司做运营总监,成绩斐然,搞了一些业内独一无二的运营策略,做了很多现在看来依然牛逼的运营项目。由于项目中涉及大量自动化工作内容,而我们只能人工完成,于是2015年底决定自学 Python 希望降低团队工作量,不久后做了『教练,我想写代码』的打算并离职,2016年1月开始正式脱产自学。9月开始找工作,2016年10月31日正式入职现公司,专职后端。

从找工作到入职,一共面过3家公司。

第一家公司:位于华强北附近的行业数据公司,主要工作是写分布式爬虫。

我对此毫无概念,面试的时候问用没用过数据库,回答没用过,然后做了一份笔试题,有一道题印象很深,问从1+2+3+...+100怎么计算,于是我写了个 for loop了......;还有很难的题,例如让我写一下分布式爬虫架构......最后让我回家等消息,当然是没消息。通过这次面试,知道了数据库这东西很重要,于是回家后马上买了一本 SQL 入门书快速读了一遍,学会增删改查。至于这家公司本身,我看了现场气氛后没太大兴趣,对工作内容也并不感冒,所以没有很遗憾。

第二家公司,腾讯。

能混到腾讯面试,我也很意外,居然没有被刷简历刷掉。我没有通过腾讯的社招平台投简历,而是在 V2EX 上看到了腾讯云工程师发的招聘贴,于是把直接发简历到腾讯云工程师的 QQ 邮箱里面,附带了一封求职信。某一天接到电话,说定个日期来一次电话面试。腾讯的这场电话面试是我最紧张的一场面试,电话期间被问及冒泡算法的复杂度,我脑子一片空白,完全想不起来,当然是遗憾收尾。对面工程师说,其实觉得我的工作态度非常好,而且之前的运营工作经验说明我善于利用工具解决问题,只要技术水平达到他们的最低标准,就很乐意让我加入,只不过……

重点说说第三家,现公司,米筐。

最早在拉勾看到米筐的招聘信息,投了然后被拒。然后在 V2EX 上(又是 V2EX,想找工作的朋友一定要重视这种社区)看到他们的招聘贴,继续发简历,同时附上了求职信(这封求职信起了关键作用,后面会细说)。去公司所在地(当时公司在深圳一个别墅区里租了几间房子)面试,和 CTO 简单聊了一下自己学过的东西、写过的代码,然后给我留了一个作业,就是在2周内学习冒泡、插入、选择、希尔、归并、堆、快速,桶排序,并用代码实现。

接下来的2周我足不出户,靠着一本红色的《Algorithms》、一本《算法导论》以及网上的零散内容,大致知道什么意思,然后面向 Google 编程,最后实现了。发邮件回复 CTO 后,1小时内得到回复,说不错,但是没有函数、没有继承,就是一堆命令的堆积,让我用 类 来改写一遍,时限1周。

继而又是兵荒马乱的1周。CTO 第三次发来邮件说不错,但是有几个技术细节和我讨论一下,然后再让我把排序内容输出为表格并增加自动化测试进行验证,时限又是1周。

这次稍微简单一些,但是从没写过测试,也没输出过表格,所以学习了几天,然后实现之(这里有个插曲,我当时的『表格』就是在命令行里绘制一张表格出来,现在想想 CTO 可能是想让我输出成 csv 之类的文件)。这次邮件之后,CTO 通知我第二次面试。这次面试我自觉带上了开发用的 Mac,现场也确实用到了,简单讨论后,CTO 说恭喜你加入米筐。


以上是我仅有的三次面试的经历,第三次就找到工作,只能说自己运气不错,另外求职技巧也有一些可以分享的。

技巧1:良好的邮件习惯

标题写个人基本信息、应聘岗位等,正文简要介绍自己,附件包含 docx 和 pdf 格式的简历各一份,然后附上一封像老朋友面谈一样的诚恳的求职信。

技巧2:求职信

从投腾讯简历开始,我在太太的帮助下认真的写一封求职信,详细介绍自己的优势、劣势、以及对新工作的期望,在信中表达出极为诚恳、诚实的态度,而非吹牛逼、忽悠。记得在给米筐的求职信里我写过『知道自己的水平和其他工程师有差距,所以并不要求工资水平和别人一致,只求多一点实战机会、多一点成长』。因为我也面试过不少人,深知市场上的聪明人太多,老实踏实的人太少,所以装一装老实,可能算是一个蛮突出的『竞争优势』吧。

技巧3:不要海投,不要投 HR 邮箱,直接发简历到工程师邮箱

我们这种自学编程的人,绝大多数水平真的不行,没有相关工作经验,没有相关学历。类似我当年不会用数据库、不知道多线程多进程的区别和用途,海投简历只会收获海拒。因此最好能绕过 HR,与工程师直接联系(例如腾讯那场面试,如果我走正常招聘程序,不可能获得面试机会)。


基本上我就是这样在自学编程后找到第一份开发工作的,到现在,工资数倍于入职的起薪,深深觉得米筐给我的东西,远远多于我给米筐的,很感激公司同仁的宽容与善良。写代码是一项实践性的工作,不进入生产环境,很多东西自己是搞不懂也不会接触到的。希望各位自学编程的人,都能早日找到工作,快速学习和成长,不断进化和突破,最终超越自己。

(我的工位,这一年多,每天就在不停地问问题中度过了。)

================================================

我个人微信:gulaoshizaici

加我的朋友,我会把你们拉到我建立的 Python精英社群

大学浪费了4年光阴,不对,应该说是六年,因为挂科复读了2年,最后还没拿到学位证,呵呵。然后回老家爸妈逼着考公务员。那段时间真的很迷茫。

从小爱打游戏,大学时就想过要自己搞,在网上误打误撞,发现了一个简单的叫 rpg maker 的游戏制作软件。虽然基础功能是制作勇者斗恶龙这种日式 rpg,但是可以通过 ruby 脚本完成个性化的游戏开发。在家里蹲的这段时光,终于下定决心做我自己想要做的事情。

万事开头难,特别是当你独自一人,既没有头绪,也没有目标的时候。幸运的是,那时候有一个这种 rpg maker 软件的国语论坛,里面有啥也不懂的小屁孩,也有不少懂编程的人。论坛里有一个板块,专门讨论脚本,就是软件里编程相关的问题,简直就是 rpg maker 界的 stack overflow 啊,哈哈。刚开始,我就在里面问一些傻逼的问题,慢慢的,就能提出一些不那么傻逼的问题,顺便帮别人解决一些傻逼问题……后来,我就做了自己的第一个小游戏,屏幕周围不停刷怪,主角拿着AK突突突的这种。放到论坛上,引来各种小屁孩膜拜“大神”,当时心里感觉还倍儿棒,呵呵。可惜了,现在论坛已经关了。

当时为了实现一些定制功能,还自己学C++,写了个dll让游戏加载,主要就是做按键映射。然后借用了别人为 rpg maker 开发的一个音频库,品牌了一个简版的劲乐团游戏。不得不感叹,社区的力量真的很强大。当时出于兴趣,也刷了一点OJ,读了一些算法相关的书籍。

然后呢,考上了公务员,当然是不可能的。去人才市场碰碰运气,居然找到的是一份 php 后台开发的工作,也许是看我念的大学还不错吧,呵呵。再后来,跳槽了一次,北京的同学创业,缺码农,就过来了。现在在这边干了快2年,java 开发,感觉还行吧,java社区确实非常壮大。

总之非常感谢那些解答我的各种傻逼问题的人,再次由衷的感谢。我也应该去帮助帮助入门者了吧,最近都是忙工作,忙里偷闲搞搞自己的游戏,呵呵。希望自己能一直不忘初心。

我来点接地气,不显摆的回答吧。

题主学的是.net,我学的是java,所以在学习路线上,可能帮助不大。我就随便聊聊。


从零基础自学到获得第一份编程工作需要大概多久?

先说结论:完全零基础,电脑只会开关机的,至少需要6~8个月。

我高中理科,大学不小心读了日语,15年毕业。开始接触编程是16年9月底了。在此之前,对电脑的了解就是开关机,安装卸载都用360,它还可以一键重装。总而言之,就是普通的网民。

学编程的原因很简单,自己比较内向,喜欢思考,尝试了外贸以后发现压力很大,很压抑。再加上身边很多朋友都是优秀的程序员,精品佛一切都顺理成章。

由于是完全零基础,我的学习路径是这样的(边工作边学):

16.9~16.10:

郝斌 《C语言自学教程》非常适合小白。但其实就是学些循环语句和基本的编程语法。

16.11~16.12:

绍兴文理学院在线判题刷了100道新手题。那时我已经对循环语句很熟了,包括冒泡排序选择排序等。科班可能觉得这些都是很简单的东西,不用3个月。但对于小白来说,其实真的挺难的。

17.3~17.5:

《毕向东25天java基础教程》,讲得很好,但是还是把我搞得死去活来。我觉得java真的太难了。和之前学郝斌老师的C语言完全不是一个量级的。如果说郝斌老师的C语言教程相当于跑1000米,毕老师的25天java教程相当于跑了马拉松....

17.6~17.7:

崔希凡的JavaWeb教程。也是讲得非常好,深入浅出。但是学到jdbc就学不下去,太难了。因为前面JavaSE基础没打扎实,学到后面稀里糊涂的。

17.7~17.8:

所以我回过头复习JavaSE,这回看的是刘意的java教程。由于有毕向东的铺垫,我吸收的很快。java基础也得到了巩固。

17.9~17.11:

重新学习崔希凡的JavaWeb、ssh框架、ssm框架、svn、maven...一切都很顺利。

17年12月底找到了工作,发现自己比公司里很多培训出来的基础都要好。当然啦,我学了很久,他们就学了4.5个月。

新手最大的敌人首先是没有学习路线,其次才是学习能力。我浪费了很多时间找资料和规划学习路线上,有一段时间差点因为找不到视频要放弃。所以我觉得如果一开始有路线有资料,完全零基础应该也要6~8个月学到能工作被人带。

我的详细Java学习路线是这样的,保证干货:零基础Java学习路线

至于.net,我不是很清楚。总之,零基础没那么容易的。会在很多科班朋友完全想不到的地方卡住!就好像我妈让我去剥几瓣大蒜给她炒菜,我的疑问首先是“几瓣大蒜”到底是多少?很多大V一点都不知道零基础到底是什么状态,瞎答题。有抖机灵的,,也有推荐看什么《java编程思想》!完全没看题主问题描述,上来就显摆。所以如果答主想继续深入学习.net,建议找和你同样起点的人的学习路线,大V个人能力虽强,但是零基础的路线规划,其实并不清楚,属于强答。


如何找到工作?

我性子比较耿直,所以简历基本没有造假。我基友给我内推了几次但是都是比较大的公司,包括杭州的百世集团、诺基亚。面试很专业,可惜,我的定位很尴尬:和科班毕业生比,我没有扎实的理论基础;和工作几年的人相比,我又没有任何经验。

我不知道培训出来的朋友是怎么找到高薪工作的。反正我找不到。最终我选择的是去二三线城市先去做外包。同事非常不错,学到了很多。

所以我的建议是:

  1. 如果没内推,姿态放低一点,脚踏实地从小公司入手,不要心存幻想,什么出来就10k。
  2. 当然,要去靠谱的小公司。何为靠谱,其实很难定义。有薪资方面的考虑,也有技术气氛的因素。
  3. 另外很多招聘,其实都是带有欺骗性质的。我就跑过好几次,很远坐车过去,结果是招那种三班倒的屏幕监控,只要求会用软件,和编程压根没半毛钱关系。所以能在电话问清楚的,一定敞开说。不要浪费交通费。

最后,我还是不推荐大家都一股脑进这一行,真的不好混。学完出来找不到工作就蛋疼了。当然,可能是我没能力。但是我认为在知乎这个人人年薪百万的魔幻地带,我能代表大多数非科班零基础的情况。所以,还请慎重。

对了,我常用的求职app是boss直聘,它是专注互联网招聘的。对,就是之前传销案提到的app。哎,同情那些受害者。不过boss直聘现在也整改了,规范了一些。另外本来求职就是要多个心眼的。坏人在社会,不是只在这个app上,大家还是要辩证看待。我当初一开始用的前程无忧...这里说一下,以免你和我一样不知道。然后多看看招聘要求,自己简历按照他们招聘要求写。机灵点。下面是我的Java求职简历,仅供参考:


最后再给一个就业指导,虽然是java的,但是应该有一些可以借鉴:https://pan.baidu.com/s/1bnGgVIf


——————————————————

呃…大家好像把这个回答看成鼓励帖了,其实我是想劝退。真的,不要冲动。每次看到什么“我今年32岁,月薪1w,想转行做程序员”我都想骂醒他…

不要那么天真啊,真的。转行很难找到工作的,年龄也是问题!不要被知乎洗脑,觉得只有IT行业人傻钱多日子爽好吗!种一棵树最好是十年前,其次是现在。这句话是说树啊!树!你们懂吗。你是人,再过不到五年,你要结婚,养家的!转行穷三年不是开玩笑的

2018年8月15日更新:换了一份更满意的工作,今天上班第三天,一切都好,两份工作中间的休息期我把当初入行前端那个饿了么商家模块用vuex和axios重构了一遍,把《javascript核心编程》这本书看完了,虽然还是小菜鸟一只,但是对自己越来越有信心,有时候想想觉得真是神奇,因为当初一个小小的心愿使然,我真的变成了一个程序媛,做了自己想做的工作,实现梦想的感觉真好!我编程的天分不高,有惰性,会焦虑,接受新东西也不快,但是市场给我这样的普通人机会,真的是感激加庆幸,给自己的2018年定一个小目标:希望能慢慢读懂一些框架的源码,在程序媛的道路上不断精进,给自己加油!


2018年5月16日更新:找到新工作了,明天去上班,非常顺利,希望一切都好。


2018年5月8日更新:今天我所在的这家公司宣布倒闭了,创业公司九死一生,意料之中,但是情感上有点难以接受,毕竟在这里愉快的学习&工作这么久。

这段时间自己进步很大,看了招聘网站,考虑到我初级大龄转行女程序员的身份,觉得没有合适的,于是在freecodecamp上刷了一会题,没有想好后面的计划。

应该会继续复习高数,这段时间也一直在学习,进度慢,但是还是能学会,前端和python也继续学着,幸好没有生活的压力,有合适的机会就去工作,没有的话就考软件工程的研究生吧。

其实,转行当程序员,挺不容易的。



临床医学毕业,女生,在医学出版社,药企,医疗软件公司都呆过,31岁之前没有写程序的经验,顶多算是半吊子的爱好者,对自己的职业发展感到迷茫,在辞掉上一份工作后开始认真时间转行软件开发这件事。

一边全职带孩子,一边自学,考了两个计算机二级的证,一个web开发,一个c语言,有了一点点基础,没有勇气和底气找编程工作,就想着跨专业考个计算机的研究生吧,在家学习高数复习英语。

一个偶然的机会,看到一个技术微信群有个人招前端,当时的招聘要求是:前端基础好一些,英语好,会用google。我就加了他微信,说了我的情况,结果他说:“你要真有兴趣,用vue做个饿了么,放到github上我看看”,我马上有了动力,当天就开始找学习资源,说干就干。

在慕课网找了一个模精品饿了么的课程后,配置环境,找趁手的编辑器,了解git和github花了不少时间,然后就开始跟着视频做项目,那时候还自己一个人带孩子,就在带孩子的空隙学习,20多天后跟着教学视频用vue框架做出来一个饿了么的商家系统,(地址在这里http://www.github.com/lovelytong/sell ) 然后就很happy的跑去找招聘那个人了,然后就进了现在的公司实习。

我发现我是真的喜欢编程,所以才不要工资来到这里实习,目前公司的项目接触还比较少,把html css js的基础知识补了一遍,目前的水平可以模精品个页面,用js写个计算器啦(计算器我也上传到github啦,地址在这里https://github.com/lovelytong/caculator.git),对于不同浏览器的兼容性,还有如何写与后端对接的接口,这些知识还不会,但是我每天都在进步,比在家自学效率高多了。

未来还没想好,之前我是全职在家准备计算机研究生的考试,学高数进度并不理想,现在每天去上班,有了一种仪式感,实习没有工资,但也没有压力,比在家自学开心。

这段时间越来越觉得,我未来肯定能吃上程序员这碗饭,走的慢一点没有关系,能到达终点就好,我应该是真心喜欢这个行业。

分享一位牛友(WISING)的面经:【Java面经】非科班渣硕面经,大佬请忽略_笔经面经_牛客网


以下方便阅读,搬运大佬文章:


背景介绍

楼主某末流985渣硕一枚,磕盐不会,偶然接触了下编程,然后又稍微学了学Java,后面就走上了程序猿的道路,今年四月侥幸去菊厂实习了一波(虽然没学到东西)。

秋招拿了几个一般的offer(大佬们别见笑):去哪儿、海康威视、招银网络科技,最后签约招银(四川人,想每天下班吃火锅)。

去年的时候比较迷茫,不知道自学到底需要准备什么,在牛客上看了很多面经,非常受益,今天也分享一下供参考。本篇文章主要讲讲自学的历程即找工作需要注意的地方。


自学经历

楼主去年4、5月开始决定学习Java,最开始主要看《Head First Java》(该书配有大量插图及段子,入门佳选,入门切忌《Java编程思想》),然后看了大量的培训班视频学习了Java基础知识,数据库,Java常用框架(很多人看不起培训班,培训班的质量确实参差不齐,但是由于针对基础薄弱的童鞋,所以老师讲的特别清楚,以我校学子来看学着肯定非常轻松,我一般开1.6倍到1.8倍的速度听)。在8月份的时候开始接触算法和数据结构,刚开始一头雾水,这算法和数据结构到底学习谁先谁后啊,做题看不懂,看书不太好理解。这里推荐《算法第四版》,配有大量的图,让你详细理解数据结构设计的过程(入门切忌《算法导论》)。

搞完这些之后,有幸加入了一个工作室,(工作室由于刚成立事情不多后面也解散了,东西没有学到太多但是认识了几个朋友)在工作室期间,看了《程序员面试金典》、《剑指offer》,在牛客网上刷了剑指offer上的题(刚开始做题基本上做不了,先想然后看别人的解答仔细思考,再自己慢慢敲,做多了可能就有感觉了)。

后续又看了《高性能MySQL》(大部头,有时间必看,时间少选看)、《深入理解Java虚拟机》(必看,忘了就看,主要是垃圾回收算法、类加载那一块,其它章节可以选看)、《并发编程的艺术》(必看,主要了解一下锁的原理)、《图解HTTP》、《图解TCP/IP》(日本人写的书,结合大量插图,看着很浅显易懂)、《Java程序员面试宝典》(完全的面试知识点罗列的书,评分较低,但是对于梳理知识点是非常适合的)、《数据结构与算法分析 Java语言描述》(觉得算法第四版少了点什么的话可以看这个补充)。这些书再结合大量的博客可以基本覆盖校招的知识点。

在今年三月份时各大公司开始招聘实习生,楼主水平有限去了华为实习,方向也是Java软开。由于所在小组全栈式开发,在里面耗费了大量时间学习了前端知识(前端依然菜的抠脚),所以整体感觉上实习提升不大。实习了四个月之后,在八月底结束实习,由于部门原因通知没法转正。当时心里很气然并卵,觉得自己在里面提升不大又耽误了很多准备的时间,不如在图书馆看书(这也是个教训,实习不一定有优势,如果实习打杂转正几率小的话不如在学校夯实基础准备校招)。所幸楼主在华为实习的时候每晚回去继续看书,同时在实习时有幸认识北研所一位实习老哥,每天用内部聊天工具跟他交流Java基础,基础尚不算太差。(这里想说一点的是,8月初很多公司就开始了内推招聘,现在内推特别泛滥,基本都要求笔试,笔试难度高于校招,没有准备的话基本gg,但最好都投一下试试水,楼主当时由于在实习算法没练好就网易过了笔试。。。)

ps:这里说点个人感悟,当初在准备实习时,以为刷完剑指offer、程序员面试金典,实习的题应该没啥问题了。实际情况是:实习题型基本全是动态规划(尤其是背包问题)、图搜索,如果早做准备,那完全没问题。而等到正式校招时你才会动态规划基本题型,这时候的题的难度又上升了,所以算法题得早做准备。


校招经历

校招在九月初的时候各大公司就开始集中网申了,需要提前做好简历。楼主大概投了40多家公司(楼主觉得一定要多投多练,不一定只投自己想去的公司,在面试初期可以拿几家公司先练练手,如果运气好有幸拿了offer更佳。多投能让你有更多的选择,如果你只投了几家公司,然后都挂了,那么你后面基本只能投小公司了),整个九月上半月每天基本都在考试、投简历、做测评,印象最深的是有一天考了四个笔试,当晚投了一个公司简历,又做了俩小时新华三的测评,当时大概凌晨一点,整个人都恶心了。

在面试初期好几家面试都没过,加上被菊厂拒了,心里还是很不爽的,直到九月中旬去哪儿三面直接发了offer,当时有点柳暗花明的感觉。后面又面了招银、海康之内的好几家公司,在拿到这几家之后基本就没找了(期间经常每天四五个面试邀请冲突,拒绝的感觉还是挺爽的,觉得自己之前做这么多笔试还是有效果的)


下面讲讲几个公司的面试问题:


酷家乐

一家创业做家装的创业公司,面试体验非常好,但二面约的时间和一个现场面试冲突了没面

电面:

  • 说说你印象最深的项目(异步队列)
  • 在项目中遇到了什么问题(数据库的设计、异步队列如何将事件传入)
  • 说说对redis的理解(基于内存、I/O多路复用、单线程)
  • redis为什么要使用单线程(面试官补充主要是为了原子性操作)
  • redis有哪些常用的数据结构,项目中你使用了什么数据结构
  • 说一下spring的了解,有几种注入方式,你们项目一般使用什么进行注入
  • 项目的web.xml配置中dispatcherServlet和ContextListener是干什么的
  • mybatis使用情况,了解哪些,用了哪些标签
  • 项目中用到了什么设计模式
  • 项目使用了什么版本管理软件,在github学习什么开源项目没有
  • 一道算法,有序数组里面数字可重复,给定一个数,找出该数的范围(第一次就想到了遍历,后面想二分查找改进)
  • 汉诺塔问题

远景能源

新能源的土豪公司,招偏执狂,感觉面试官是有那么点特色的,抓着一个点死问

电面:

  • 类加载了解吗?类加载步骤,双亲委派模型。如果我写了一个java.lang.String类,怎么进行加载的,怎么跟原来的类进行区分的?
  • 垃圾回收机制了解吗?哪些时间我们需要对垃圾进行回收,如果我有一台双核4g的机器,我该如何分配新生代和老年代的大小?
  • 异常捕获了解吗?说说常用的,你在项目中用到了哪些类型的异常捕获?如果碰到了空指针那些异常你会怎么处理呢?
  • 多线程怎么样?说说你项目中用到的并发
  • 说说你最拿手的项目?说了redis异步队列,就问同步和异步的概念,异步需要怎么实现,需要回调函数吗
  • 既然redis用到了缓存,那如果叫你自己实现一个缓存,你该如何实现?怎么考虑缓存过期这些问题?


电信IT研发

电信的互联网公司,有编制,待遇也不错,前面二十分钟基础感觉答的基本倒背如流的,问到架构不太会了
  • 单点登录怎么做的,session共享,session和cookie的区别
  • Bootstrap啥类型的,jQuery了解情况
  • JVM垃圾回收,新生代和老年代的垃圾回收,可达性分析
  • HashMap和Hashtable区别,HashMap添加的对象为什么要重写equals和hashcode
  • 数据库了解多少,事务acid,事务操作,怎么加锁,分布式系统锁,选举
  • 微服务了解什么,微服务治理,微服务之间通信

58同城

面试最差的体验,酒店超级差,闷的要命,安排还恶心,过去等了三小时,一面面的还不错,二面没问多少就挂了,好像都是c++岗,面试官不用Java

一面:

  • 手写快排
  • 数据库引擎的区别,说说btree,手写联合查询sql
  • HashMap了解多少说多少
  • wait()和sleep()
  • 事务举例
  • 用过什么nosql,说说redis,topk用什么数据结构
  • 数据库分表
  • 情景题,高并发访问一个接口,如何检测传入字符串的相似度很高的?答了个布隆过滤器,说沾了边

二面:

  • 算法题给一个数组,如何把偶数放到左边,奇数放到右边?写完后说当两边顺序已经一致了,交换是否会出现问题,加个判断
  • 说说数据库,聚合函数了解吗?
  • 网络编程了解吗,http请求如何区分请求头和请求体?说了解一点nio的知识,nio指什么,同步和非阻塞的概念是什么?
  • 说下注册的时候的检测,多用户怎么判定是否被注册

去哪儿网

面试最好的体验,第一天上午机试,下午就接到通知明天去面试。在一个去哪儿合作的小清新酒店面试的,所有面试官都特别好,遇到答不上来的会给你解答,三面完直接现场发offer,只要在十月三十一号之前把三方寄给他们就行,简直不要太良心。当时一面完的时候我说我计算机网络和操作系统方面不是特别好,一面面试官笑着说:没事,路还长呢,你去等二面吧。待遇呢给的确实偏低,不过还是由衷粉一波去哪儿

一面:(30来分钟)

  • 说一个自己比较深的项目 ,redis多消费者一起取的时候如果队列为空你怎么处理(答了CAS进行尝试,超过失败次数之后就进入睡眠,面试官说可以不用这么复杂~~为空时直接进行睡眠就行)
  • 纸上手写Springmvc DispatcherServlet的大致实现(大概10分钟的样子)
  • 数据库了解吗?聚集索引和非聚集索引的区别,存储引擎的区别?主键使用不重复的字符串会出现什么问题(插入的时候由于字符串不能像自增长的id一样连续,所以在磁盘上的位置不同)?
  • 说说HashMap吧,然后讲了HashMap、ConcurrentHashMap 1.7、1.8的实现(讲的很详细,面试官觉得数据结构还不错)
  • 然后问计算机网络咋样,我说很一般操作系统咋样,我说很一般
  • 线程有哪些状态,怎么进行切换的。


二面:(40来分钟)

  • 说一个比较深的项目,还是说的异步队列,问你这为啥要用redis做异步队列啊,我用线程池直接自己开一个队列跟这有啥区别。扯了一堆,扯了redis I/O多路复用模型,最后不太满意~~
  • 然后又手撸了一遍Springmvc
  • 然后问HashMap
  • 最后说你用了这么多redis,叫你设计一个缓存,你该怎么设计,get和set的时间复杂度怎么算的(答了用LinkedHashMap实现,分析了一下LinkedHashMap但是也没怎么说清)


三面:(20来分钟)

  • 谈下人生,当场发了offer


顺丰科技

最懵逼的一次面试,在品学楼一个教室面的,感觉极不正规。一个估计三十来岁但是看着可能四十多岁的大叔面的,完全get不到他的点

一面:

  • 进去跟hr面一样,谈人生(你最喜欢看哪本书,你觉得在华为学到了什么),全程基本没问技术,吹牛20分钟说可以走了


招银网络科技

招商银行下面的子公司,以前叫融博,负面新闻较多,今年在成都刚成立分部,由于是银行,笔试和面试都比较强调sql,面试偏重于数据库和项目。现场面在软件园那边的招商银行面的,当天直接三面,基本每个人都有三面。面试的感觉只有一个:不愧是银行,太壕了。在七楼面试,层高居然有5、6米高

一面(电面15分钟)

  • 说说对JVM的理解
  • Java程序初始化顺序
  • 线程的创建
  • mysql主键和唯一索引的区别
  • 说说最近的项目
  • 如何实现session共享,用redis如何实现
  • 说说微服务,微服务之间如何管理

二面(现场面30多分钟)

  • 看项目中有前端的,先问了下前端的css的选择优先级
  • 手写了一个查询sql
  • 手写了一个双重检查单例,问spring是怎么实现单例的
  • springmvc的大致实现过程
  • 项目里重要的地方
  • 说说微服务
  • 如果你不用redis来做队列,自己写你需要注意哪些方法
  • 数据库存储引擎的区别
  • 数据库优化会吗,说说常用的优化

三面(现场面30多分钟)

  • 面试官看了简历觉得项目时间都不长,没有太多兴趣,全程带笑,叫讲项目的兴趣点。讲redis异步队列,吹吹原理。说这没啥用,你这单机redis还不如自己实现一个队列速度还快些呢,你用Java写一个类似的redis才厉害(当时有点懵逼,感觉这面试官可能不太懂技术)。然后笑着听我吹完了springmvc一套,最后问我微服务治理知道不,我就扯了点服务注册和发现的知识。

四面(现场面40多分钟)

  • 女hr全程含沙射影带笑的问,别人好像都只面了20来分钟。。。由于是转行,问了我转行原因,学习、生活、教研室那些情况。


OPPO

广告部的工程师面的,面试官自我介绍时有个非常骚气的花名,整体问的比较开放,二面聊着聊着就挂,笔试题比较简单

一面(现场面20来分钟):

  • 面试官首先自我介绍,然后我自我介绍。叫先看成绩单,问我最喜欢哪一门课,这门课有什么特点(我嗅到了hr面的气息)
  • 然后说先看下笔试题吧,你觉得笔试难不(我回答说不难就看到面试官在纸上写了个简单,感觉想教育我了),就问了http和https的区别,https加密的过程
  • Spring是什么啊,为什么用Spring啊?Hibernate是什么啊?Mybatis是什么啊?假如我现在要分库分表,我选哪个框架?(这没接触过啊。。)你为啥用Redis啊,Redis有哪些方法,Redis事务,Redis哪些方法有原子性,Redis和Kafka用什么区别啊?
  • Java虚拟机垃圾回收方面的知识,生存区为什么要有两个,空间担保机制是啥
  • 一个32核,64g的linux服务器,硬盘是5TB,怎么统计一个1TB的文件中一个限定中文名和英文名出现的次数(我简单说了下使用流水线),问大概需要多久时间,估计一下,一分钟两分钟还是十分钟。(总而言之面试的问题全部都相当的开放,让你自己说)


二面(现场面20分钟):

  • 简单问了下项目,各个知识点都问了一点点。


海康威视

今年扩招特别多,面试相对偏水,面试官感觉技术很不错,问的问题完全不按套路来

一面(现场面20分钟)

  • 面试官特别扯,进来就问后面还有几个,我们稍微快一点吧。然后看了我的简历,就问前端的类选择器。
  • 然后问Spring Boot啥概念,有啥优势。接着问Spring Data JPA是啥,咋用(面试这么久第一次问我这个)。我解释了一些JPA是个规范,面试官问你这JPA用的啥版本啊(懵逼,俩月没用了。。记不住了),然后又问JPA是哪个组织规定的啊(懵逼的说了sun、spring、apache。。实际是EJB3.0小组)
  • 看你用了Redis,你这Redis咋用的,用过lua脚本没有(这个真没用过)
  • 面试官继续问:你这Java虚拟机什么掌握的咋样啊(感觉可以开始表演了),结果我回答还不错的之后,面试官问:说说一个class文件的具体组成结构啊,要细(懵逼,这部分没怎么看,就说里面有魔数)。继续问:虚拟机是起解释作用吗,有编译作用吗(一堆不是常规套路的问题问的很懵)。
  • 然后我说我模拟实现过Spring MVC,请让我表演一哈。面试官看完简历之后说,那你就说说用了哪些设计模式(???这怎么表演),回答了下之后又问我一个http的请求的组成结构,然后叫我说http的状态码,有多少说多少。(感觉这个面试官就在观察表情,看着你很会的那种就马上换话题,完全不按套路出牌。最后殴打完我之后说了句你基础还可以)


二面(现场面5分钟)

  • hr小姐姐直接问想去哪,想要啥待遇


京东

投的成都岗结果北京的面试官面的,一面面试官觉得我还不错,结果二面面试官在某天晚上深夜11点打电话来说面试一下,说自己还在公司里面。我和他都很意外我投的成都岗,但却是他们部门面试,估计特别缺人,问我能实习不,我说要做毕设不能实习就凉了。有点可惜,留成都京东还是很不错的

一面(50多分钟)

  • Struts2和SpringMVC区别,SpringMVC有啥好处。SpringMVC的执行流程。一个网页从输入网址到显示经历什么过程?Cookie和Session的概念。Mybatis和Hibernate的区别。异常处理知道不?详细介绍了一下异常的分类并举例
  • Redis有哪些数据结构。支持事务吗?Redis分布式锁知道不?Redis能持久化吗,持久化有哪些方式,有什么特点?断电会丢失数据吗?谁更严重?
  • 数据库熟悉不,数据库引擎有哪些,InnoDB和MyIsam有啥区别,索引知道什么,哈希索引和b+树索引有啥特点,说说b树和b+树,画画b+树的结构,b+树最下面存的是数据吗?下面的数据有序吗?
  • 设计模式知道什么?项目中用了什么?回答用了策略模式,简单说了说。写个单例吧?写了个双重检查的单例。
  • 数据结构学的咋样?说说HashMap吧,对比说了HashMap和Hashtable,详细说了HashMap,最后引到解决线程安全用ConcurrentHashMap.详细说了ConcurrentHashMap1.7、1.8的put和size方法的区别和实现。其中问了synchronized底层实现知道不,就回答了个monitor,其它不太清楚。然后CAS是啥,解释一下。
  • 有并发经验没有?回答说没有,但是知道基本知识,看过并发编程的艺术。说说开启线程的几种方式吧?说说volatile?说说Happens-before原则?CountDownLatch知道不,解释下,什么情况下使用?
  • 写个二分查找吧,递归的
  • 做个智力题:8个球7个一样重的,有一个偏重,一个天平,如何两次找出偏重的小球
  • 给了一张纸,写写项目中如何保证代码的鲁棒性和可扩展性?
  • 你有哪些offer?然后介绍了下自己的部门.


二面(10来分钟)

  • 简单问了下简历上的项目,问能不能现在过来实习


总的来说。面到后面才发现了很多套路,但是好的公司已经基本结束了。所以建议提早准备,即使不能实习,也去投几个公司练一练,每次把面试问题总结一下,发现里面的套路,然后自己准备一套吹点。


总结


关于转行,以前评论宣称学了几个月Java随便找好工作,在现在的面试难度来看,基本不太可能,软件也不是想象中那么好找工作,一个岗位要的人多但是竞争的人也特别的多。

如果觉得本专业不太适合自己或者自己以后不太想去工厂那些地方上班,转行请趁早,也不一定非的学计算机,可以选自己方向相近的方向来自学。如果想转学计算机,也请早点明确自己的方向,然后在这个方向上深耕一下。

很多概念性、全局性的知识,在短期内可能自己是无法理解的,需要一段时间、一个过程来理解(个人感觉这是科班和非科班主要的差距),很多基础性的知识可能会在你以后运用某个知识点时才察觉到原来是这样。在自学了一段时间后,可以开始接触数据结构和算法及计算机的一些基础知识,刷题要趁早,平时多看一些技术博客(CSDN、简书、博客园),有机会的话尽量找个工作室或者实习,如果实习不太靠谱,建议在校招前夯实自己的基础。

关于校招,找工作运气和实力是46开的,面试挂了不一定是自己不行,也很有可能是和面试官不太聊的来。并不太过沮丧,面完一个反思总结面好下一个。简历上的东西力争全都会,摸索一套属于自己的吹点。面试官大部分情况下不会问框架的基本使用,都喜欢问点底层的东西(面试造火箭,工作拧螺丝),所以会点基本的CRUD是没有太多作用的,建议深挖底层,比如楼主比较擅长吹Spring MVC、HashMap和ConcurrentHashMap1.7和1.8的源码,面试的时候引导面试官,在一张纸上给他详细画自己的思路。比如项目中经常用的Redis,那最好知道Redis的底层的单线程模型和持久化的方式,再深入一点自己模拟实现一个简单的Redis可以吗(LRU算法,再自己想想时间复杂度)。使用Mybatis,可以自己运用JDBC模拟一下Mybatis的实现。这些好多都是楼主校招后期才慢慢体会到的(然鹅工作都找完了)。


终于写完了,排版乱见谅了,祝各位找到心仪的工作,希望自己顺利毕业(求善良的导师放过)。


相与作者探讨,可以戳【Java面经】非科班渣硕面经,大佬请忽略_笔经面经_牛客网

程序员这个职业,在职场上看重的是真正的能力,只要你的技术水平过硬,是否专业出身不是大问题。对于自学编程的人来说,想要找到一份编程类工作需要从两大方面下功夫:

其一,提高自己的技术水平,时间允许的话,自己做一些小项目,积累项目经验,以此弥补工作经验的不足。

其二,多方面搜集招聘信息,多看看面试指南,提高面试技能。


首先,怎样提高自己的技术水平,并积累项目经验?

1. 刷算法题,疯狂积累代码量

当你还是一个新手的时候,你需要疯狂的积累你的代码量,你可以从基本的问题出发,做一些简单的问题,怎么输入数据,怎么输出数据,然后熟悉各种数据结构,各种常见算法,疯狂的刷题。

一般来说,刷题应该循序渐进,从易到难。你可以先从easy难度的问题做起,每一个程序也就20-40行左右,甚至你可以一旦AC,反复提交,以增强自信心,虽然这只是一个玩笑,但是它可以让你提高你对编程的自信,对编程的喜爱,当你有自信的时候,你才能真正的把一件事情做好。当你反复解决一个又一个的问题的时候,你要告诉自己我是个天生的编程者!然后你就可以挑战更高难度的问题,当你积累到10W以上的代码量的时候,你会发现你会有一个质变。一切将变的顺手。当以前要想半天的语句,现在信手拈来。恭喜你跨出了很重要的一步。

至于国内外比较好的刷题网站,可以参考我的知乎回答:如何学习编程?顺便介绍些好的网站


2. 练习白板写代码

你必须不需要任何指令地从零开始编写自己的代码。也就是说你要从一个空白文档(白板、白纸等)开始,然后在不听从任何指示的情况下自己敲出每行代码。从这一步开始意味着你已经准备好迎接腥风血雨了。因为后面你将花费大量的时间进行调试,并要尝试理解每个bug。但是在每次检测和修复bug的时候,你的编程技能都能得到相应提高,并且你也能获得真正的编程经验。这就是作为程序员学习和成长的方式。

当然你也可以通过查看别人的代码来获取经验,但是你不能直接复制黏贴,因为如果你直接复制黏贴的话,这样的学习将毫无意义。你要做到的是:认真分析别人的代码;得出它是如何正常运行的结论;然后再运用获取的经验来进行独立编程。


3. 参加编程比赛

如果你有时间和精力的话,可以参加一下Lintcode 在线编程竞赛 ,和几百人一起PK,可以很好的模拟实战,帮助你飞速进步。


4. 积累项目经验

在时间允许的情况下,最好实实在在地做上那么1-2个项目,积累一些项目经验,以弥补工作经验的不足。简历中如果有1-2个“硬项目”,对于你的求职过程来说,可能是一个“质的飞跃”。

那么有哪些项目可以做呢?

如果你自学能力比较强,也有足够的时间自己研究,可以自己做一些小项目。CC150 作者 Gayle Laakmann McDowell 曾经有推荐一些7-14天可完成的小项目:

  • Any app on your phone / computer that you think could be done slightly better (or better for your purpose).
  • A to-do list that syncs with Google Spreadsheets and Evernote (using their APIs)
  • An "idea tracker" mobile app to let you very quickly jot down a startup idea and share the list -- or partial list -- with a friend. Syncing with Google Spreadsheets is key.
  • A merged registry that creates a merged view of multiple registries. There are many people doing unified [baby / wedding] registries, but they have a major weakness in that they don't show if someone has purchased an item. This would allow someone to create many registries with just one view / link to give out to people.
  • A chat widget that allows "branching" of conversations. You know how you'll be in the middle of a conversation with someone and then another topic would come up? What if you could branch that part out to a new conversation?
  • Chrome extension to overlay Yelp reviews on OpenTable <--- do this. pretty please? I want this.
  • "Forum on the Fly" -- be able to create a very quick forum on the fly by just sending a link, supporting conversation threading and other things.
  • Online polls that don't suck / get covered with ads. Think Doodle for polls.
  • Social book recommender -- use Amazon receipts in email (this can be done -- TripIt is able to scan gmail) or screen scrape Amazon past purchases to know what you've previously purchased. Then let you see what books have been most purchased by your friends. SO many people I know want this.


其次,技术类面试该如何准备?

1. 简历

对于程序员来说,简历中的“项目经验”非常重要,它是HR和面试官选人的重要依据。在求职时,有“相关经历”常常可以起到加分作用。然而,职位千千万,怎么可能每次都碰巧有“相关经历”呢。这个时候,是否有用心“做功课”就有质的差别了。

比如,我马上要面 Facebook, 那么我就要去了解一下 Facebook 当前的主要业务、核心技术、技术栈等等。然后有针对性地去朝着这个方向放置简历的项目经验,同时在面试时,也有意地引导面试官去关注你在这些方面的技能。此外,在面试时,也可以向面试官提一些比较有深度的问题,表达你对该公司/该职位的兴趣和热爱。

那么应该去哪里搜集信息呢?主要有以下几个渠道

  • 各公司的官方技术blog;
  • Linkedin /脉脉上在这个公司工作的人,了解他们简历中所包含的过往经历、技术能力;
  • 身边的朋友、同学,特别是直接在目标公司工作的人。

2. 刷面经

在面试前,你要多看看IT公司面经汇总 和 BAT面试经典问题,了解这些大公司面试的套路,面试的流程和常见的考题,可以提前做好准备。此外,面试时的 behavior questions 也有必要好好准备,推荐阅读 behavior question 面试的答题套路和模板。


转行学编程不易,想找到一份编程类工作更是需要付出巨大的努力,但是艰难困苦,玉汝于成。希望转行的各位,都能收获满意的offer。



推荐阅读:

转专业找CS工作,刷题9个月拿到Bloomberg offer

简历 | 最容易忽略的10大简历问题, 你都做到了吗?

没有拿得出手的项目, 如何在面试/简历中为自己加分?

面试前如何了解一家IT企业?试试官方技术博客


欢迎关注我的微信公众号:九章算法(ninechapter)。精英程序员交流社区,定期发布面试题、面试技巧、求职信息等。

投简历,和HR邮件沟通,和CEO面基喝咖啡,完成三道编程题,上班

问题下面翻了翻,感觉除了高票几个回答有一些个人个人经历在里头,其他的明显在套路,谁会因为你复制粘贴了点东西就去关注你公众号买你教程啊!是不是。。。

算了,不说了。。。知乎这风气。。。辣鸡公众号推送都成网络牛皮癣了。。。

下面正题


这个回答可能更倾向于非科班或者0基础转行人员,对科班的建议会有一部分,但不打算班门弄斧。另外答案侧重于后端方向,对前端或其他方向不一定通用,注意。


#intro

首先说一下个人背景——非科班,之前在安全公司从事过安全开发工作,目前在某创业公司负责后端方面的开发工作,使用语言以java为主。

有同学看到这肯定要吐槽了,说你之前搞过开发啊,怎么能算是0基础呢?不公平xxxx!*&@#(省略一万字)

关于这点,稍微解释一下,我当时虽然是以C++安全开发的头衔进的公司,但是写的代码基本都是scanf、memcpy这种类型,其中涉及到安全的层面也就是把程序拖进ida反编译源码看一下这种。我之前大概是什么水平,相信业内的同行肯定都看出来了,不再进一步解释了。可以说和现在的互联网开发是基本不沾边。

这里也引出了一个比较重要的概念,也是一个比较大的误区。针对转行或者0基础的朋友,希望注意一下。那就是——IT行业不等于互联网。很多人认为程序员不是前端就是后端,然而这个所谓的后端和前端是什么呢?这两个都是针对于互联网开发的概念,也就是说从一开始前提就搞混了。其他开发工作像嵌入式、游戏引擎开发甚至PCL也都是写代码的,但是和前后端完全没有任何关系对不对?

当然了,还有一个小小的事实,那就是IT行业在中国互联网。入行前需要了解一些国内IT行业的基本发展现状,以及基本方向选择(下文会提及一部分),不然你还能找到对口的,那有很大一部分运气成分在里面。

所以我们就不要纠结这么多了,直接说一说我是怎么找到后端java开发方向的工作的吧。

我之前呆的公司是国企,标准95,大概在去年10月份开始利用业余时间学习java,然后今年5月份入职,其中找工作花费一个月。时间比我预想的要长很多,我本来天真的预想2个月就搞定了的,这点我也会下文展开一些。

#学习历程

因为中间没有做太多的记录,细节这块会有些模糊。

我大致的学习方法就是去网上查看培训班的课程路线理出一份学习计划来,然后照着这么学习计划去网上搜索资料编程,刚开始是看视频,后来彻底放弃这种方法,因为感觉视频非常磨叽,现在基本上只看网上文章和文档。

实际上这种路线有点问题,比如说我搜到的路线一般是下面这种

(这种路线都是有问题的,提醒不要直接拿来参考)

首先就整体层面上来说,培训班的学习路程就是先教会你一些基础,然后靠做项目、学框架撑起你的编程经历来。这种学习模式导致你可能会学上一堆没什么卵用的框架,因为你工作中用不到。我当时也把时长分配给框架比较多,然而这种做法是不对的。

比如说javaweb里头的 struts2 orcale就完全没有必要看,因为现在很少有公司用。web里头的前端框架就没必要学了,因为你是后端不是前端,html+css+jquery+ajax+jsp足以。

再比如说框架里头的webservice、activity这种就没必要看了。

另外我认为学完SSM框架之后了解集群搭建原理基本就可以去找工作了,框架方面像solr、dubbo、zookeeper、甚至hadoop都是需要结合具体开发环境的,就没必要进一步学了。

还有一个浪费我时间比较多的地方在于对于javase的内容学习的时候没有太重视,因为有C和C++的基础,所以轻视了javase,事实证明这种心态是不对的,后期学习的时候会导致重新返工。至于java基础为什重要会在面试部分提到。

总之,我的学习路线是有些混乱的,是靠不断踩坑多花费时间才慢慢完善的。之后可能另开一个回答整理一下java后端的学习方向。1??

#具体怎么找工作

这块我可以多说一些,投简历的时候因为朋友的公司也在招人,我有帮他们筛简历,他们那边的简历我大概也看了300多份了,所以不光可以从应聘者的角度谈这个问题,也可以从面试官的角度谈谈是怎么挑人的。

个人在北京工作,因此重点是讲北京java后端如何找工作面试。

我一开始投简历是在2018.04月初,当时的水平大概是ssm+redis/nginx大致了解,第一个星期没任何人帮助纯靠自己投,简历写的比较简单,一周只有两个面试,都是传统大型国企,是我基本不会考虑的工作。后来帮朋友看简历,筛的多了大概也就知道简历怎么写了,这时候面试次数能达到平均一天2个的水平,当然还是没有offer,这是找工作第二周的情况。面试次数多了之后,大概也就能确定面试的基本套路是什么了,也知道面试官会问哪些问题,一周内拿了4个offer,这个时候基本决定了。五一假期之后又面了三四家,没有特别中意的,最后就去了之前的一家。

前后总共修改简历10次以上,投递简历80次以上,面试过大约30家,最终6个offer。

##首先说简历怎么写。

(日后也会另开一个回答讲解怎么写简历2??)

简历这一块首先讲怎么套模板,一开始我是用html+css写个人简历然后转换成pdf的,为了凸显自己作为程序员的优势,内容大概是下面这种风格:


个人信息 | 技能点

| ------

| 工作经历1

| 工作经历2

|


后来发现这种风格我有点hold不住,感觉比较简陋,而且人家HR和面试官也不care,总之就是没有面试机会。所以之后继续在知乎上搜索简历怎么写,总结了一下广大知乎er推荐以下两种风格:

冷熊简历

geekcompany/ResumeSample

当然,第二个是我在github上找的。

总体来说Github和知乎的程序员比较推崇CV一类的冷淡风格,我照这种风格写出来简历大概就一页多一点。但这种简历写出来会导致个人经历比较单薄,对于项目的叙述和介绍比较少,就有HR曾经跟我抱怨,说要给我offer了,但是大Boss觉得我简历太单薄了担心我不能胜任工作,叫我重写一遍简历,而且她推荐简历内容大概4页左右。

还有这种操作?

于是我又继续改了一版简历。大概下面这种风格。

模板别问我要了,word2016新建模板搜简历关键字,word自带的。

上面内容只是做个示范,具体自己写。

另外吐槽一下,我去朋友那看简历的时候还真的有收到简历照片直接红叉号的,而且还不止一份,我去,请问这些同学,你们求职的诚意在哪啊?

可能会有人问,简历不是推荐pdf格式的么,就像业界都用restful风格接口一样?

其实有一个小小的细节,那就是我中间有用猎聘投递简历。我的猎头还是比较给力的,58、京东以及某金融互联网公司都有给我推荐,当然了个人能力不行另外方向也不是特别贴合就没有面上,不过还是比较感谢他。使用猎头投简历的话,猎头会把你的个人信息整理成简报的形式,大概下面这种:


个人信息[加粗]

|---

工作经历/项目经历1

工作经历/项目经历2

工作经历/项目经历3


所以会要求个简历可以编辑可以复制粘贴,word格式最好保留一份。

框架搭起来之后基本就是不断面试、不断完善简历里头的细节了。比如说java里头不要写了解垃圾回收机制、web方面不要写了解http,因为这两个问题是很大的坑,都属于一问能问上一个下午的问题,你只是一知半解的话就很尴尬,谁写谁懂啊(蜜汁微笑)

顺便从招聘者角度说一下各大培训班的简历模板,我都不想吐槽了,很多培训班出来的简历都不带改的,好几份几乎都是一模一样的,我现在看简历都总结出来经验了,现在基本一眼就能看出一份简历是不是培训班出来的,甚至是哪个培训班出来的,X马X智X谷X学堂X内X风都能看出来了,目前这个能力还在持续增长中。

emm

针对培训班出身的提一些建议吧,像Oracle一类的项目中不经常用的就不要写了,明显就是在告诉面试官这是套路简历,另外这种简历暴露的问题还在于项目经验方面,正常来说一个项目都是好几个人分工合作的,你一个人把所有框架都搭起来了把所有模块全写了,就是在告诉面试官这是你随口编的。

长点心。

怎么说,你写毕业论文的时候至少也得改个十几遍二十几遍的吧,怎么到真正就业环节简历写得这么渣改都不改你觉得合适么?

简历就说到这吧。

##去哪投递简历

一开始我用的是智联和51job,只得到了老牌国企的面试资格,后来改用拉勾和boss直聘,我的个人建议是精准匹配。我不推荐盲目海投,因为java开发是一个非常宽泛的概念,老国企搞个OA不上线是不是java开发?小程序是不是java开发?外包是不是java开发?甚至用java写爬虫是不是也是java开发?然而这些发展路线个人获益都是比较低的,不推荐选择。

那么怎么精准匹配呢?我的做法是限定行业、限定薪水区间、限定地域、限制公司规模。然后根据筛选出来的公司投递,我习惯用Boss直聘直接跟HR沟通,时间限定在9:00-11:00,基本上一上午就能把一周的面试机会安排出来。

我当然也用拉勾,不过拉勾的反馈实在是太慢了!因为这个原因,拉勾不是我的主力选择。

有一点我认为比较重要,那这两个软件需要和HR沟通,你用系统默认的话打完招呼之后HR会先看你有没有自我介绍然后去看你app上的微简历,所以这两方面都要做好。虽然我投的时候是用BossRush模式进行的,但基本的套话我都会又重新发送一遍的。

我还用了安卓便签软件来总结这些套话,大概这样:

基本的自我介绍,工作介绍一类的要有。

再从招人的角度来说,一个岗位都是几十上百人竞争的,HR肯定不会先看系统默认生成的。

高票答案说的V2EX,我也是经常去的,也是受益匪浅,只是实力再强一些的话再考虑内推。编程推荐哪些网站日后也会再开回答另做介绍3??

##面试

这个,今天有点晚了,好吧,具体有时间再写。感觉会写很多。。。4??


所以,你要问我面试经验是增长的,简历是不断修改完善的话,答案就是——多参加面试。很多时候面完了之后面试官觉得你态度还行都会指点你告诉你面试中存在哪些问题。

多参加面试更多类似于一种试探边界的行为,只有多去面试才能知道岗位具体需要什么技能、面试官具体需要的是什么样的人才、才能知道你这个水平能要到多少薪水etc.

所以推荐各位多去面试。seriously


写的有点长,差不多花了一下午了,还有工作要写代码,抽空补完剩下的部分。


预告:

#工作的选择

#java后端 -->基础为什么重要

#工作区域

#公司的选择

#创业or大型or外包

#公司业务和发展方向

#工作时间、工作类型和个人提升的关系

#怎么要薪水

#任职要求

#个人建议

#如何发展

#现实

#行业套路

#资源推荐etc.


更新6-24

反馈太少了,简略写了。

面试

准备面试的时候完善了一张xmind表,最开始对照着职位要求进行准备,之后根据面试官的提问以及反馈进行不断完善。涉及到新型框架的部分,一般在面试之前地铁和便利店花一到两个小时看一遍,久而久之对现代软件开发中常用云开发框架基本都摸清楚了。

其实整个求职过程除了面试之外还有笔试。

笔试这种形式最常出现在技术力较弱的创业型公司和老牌国企,一般流程是做题之后HR对比答案,合适的话再进行面聊,其实是没什么效率的,技术力足够的公司是不会这么做的。

所以笔试的问题也是从网上找来的,最多的出处就是牛客网,除了考察java和编程基础之外,会有一些数据库、框架和业务的内容。上边的回答中看到有人说面的公司有考察笔试甚至把他学的内容全问了,感觉是自己满意的一次面试云云,我就笑了,这种应该就是老板或HR没什么技术力照着网上的流程来罢了,自我感动的话就。。。

其实我从面试和笔试发现了一大问题,那就是java面试无论什么级别,都基本不问javaweb的内容,我认为其实是非常不合理的现象,对于web开发来说,其实web开发是非常重要的内容,初期java开发在实际工作中除了CRUD之外就是web编程,域对象,转发、重定向,cookie、session一类的完全没人提我认为非常不合理。希望招人的初创公司稍微重视下这一点。

至于面试官怎么考察你的个人能使,一般是根据简历上的内容层层展开逐渐递进的。

比如说简历上写了多线程,可以先问多线程的实现方式之后可以引出同步和异步的概念,再根据同步问你锁的问题。

这样一层一层往下问,看你能回答多少层。同理,业务能力上的提问也是这样,比如会问之前项目用什么架构,为什么用这种架构,了不了解缓存有没有接触并发,接触并发scale是多少。


工作的选择

公司的选择我首先考察了北京的互联网公司分布情况,研究后发现集中在中关村、西二旗,海淀,望京soho附近,基本就这三块找工作了。其他位置的,房山、昌平一类的就手动再见了。

对于公司的选择,我投的全部是初创型公司,基于两点考虑:

1.容易进、氛围好

2.个人发展选择

第一点,门槛低不说了,谈谈氛围。我个人之前在国企呆过,个人非常不喜欢国企的工作氛围,我非常反感效率低下的办公团队,创业公司虽然容易push,但总体团队组成是比较年轻的,很多时候能体验到大学合作的感觉。

第二点,这个和个人发展有关。我认为我个人有两种最终发展路线,一种是走高仿路线不断刷证完善学历进大型企业;另一种就是平民路线——个人创业。

第一种发展路线对于我个人来说已经越来越遥远了,一直到现在连时代的尾巴都没有抓住,已经是不可能事件了。

那么,选择创业,就要了解一个创业公司是怎么运作的,人员分配、开发工作分配是怎样的,最好随着一个公司从个位数员工到发展壮大这条路线一直走下来,也就是我现在在做的事了。

认清自己有什么选择,这一点很重要。There's only one way out


额外的,对于外包公司我一律拒绝,原因只有一点,我不尝试小概率事件。

外包根本不能算互联网,内部不用jenkins,不用云架构,平时不做日志分析、没有code
reviewer,基本没有开发效率,任何情况下我都不会考虑外包公司。

/*

*现在答案看的人都点多了,稍微修改一下,选择创业公司还是BATMD独角兽是一个比较大的话题,这个只能个人做判断,这里只是表示了一下我个人的情况

*/

工作时间

也就是加班。

对于工作时间,下面列一下公式∶

工作不忙==有自己的时间做别的==个人提升

风口方向+核心团队==工作忙==个人提升

第二点和机遇有很大关联,较难遇到。可以先从第一点出发,当然互联网行业的不忙是指晚上8点之前能下班,周末一般不加班这种。

应用举例∶

国企虽然工作清闲,但是工作氛围不行,首先要认清这种矛盾然后再根据综合条件选择公司。


薪水

薪水这块说几个区间,北京

9K-15K,15-18K,18-22K,22K-玄学区间

9k-15k就是应届生能拿到的了,

15k-18k就看你高并发多线程以及业务水平掌握的怎么样了。高并发这一块也是基础为什么重要的原因,因为需要进行调优。

我个人认为,都8102年了,别动不动就5k、6k的要了,人都是要吃饭养家的,没必要一个劲的拉低个人下线,你越说自己勤劳刻苦要的少就越没人要你,可以试试看哦。

当然这一批发价仅限于北京等一线城市。

需要注意的是,要薪水的时候应该是一个区间,具体要多少根据面试回答情况。比如9k-15k,面试官的问题都答到了,要15吧;答得一般的话,就12吧。


任职要求

任职要求,这一块我认为,首先要有工作态度。

态度这一块,个人不推荐用单纯雇佣关系来看,不为什么,因为我日后也是创业路线,积极融入对于个人利益正相关。当然在此之外还有一个大前提,那就是get thing done。这点其实挺难的 。

除此之外,自学或者学校教的的那些东西离正式的开发工作有差距,还需要一个月左右的磨合时间。因此另一个必须的任职要求就是个人的自学能力,公司会有一些培养计划,因此公司也会从用各种形式进行这方面的测试。

学习能力可以由学历背书,所以科班出来的大平台是最好的选择;

如果不是那么就退而求其次选择互联网创业公司了。


工作类型

这一块其实我也想说点,因为感觉很多自学或者培训班出身的会下意识认为自己能力不行,会选择一些和时代脱节比较严重的工作,比如说公司内部OA、传统ssm架构、外包公司项目一类的。

怎么说呢,我认为首先要挺起腰板来,妄自菲薄有什么意义呢?不过是在浪费青春罢了。

我面试准备的时候是在北京某知名IT高校旁边进行复习的,学校的毕业生面试的时候进行复习的时候不是在看Spark、Hadoop,准备数据挖掘、数据建模一类的工作,所以该选择什么方向我认为已经比较明确了——云计算、大数据、AI都是不错的方向,选择合适的方向、找对平台,赶快放弃在外包干个两三年再切入互联网开发的想法吧。


一线城市和二线的区别

之前没有提这一点,一线城市的开发工作和二线城市的开发工作还是有不同的侧重点的。北上广这些一线城市要求是一个领域不断深入,而二线更多会要求你接触一些不同方面的技能包括不同行业的专有能力。

我个人是在北京工作,二线的开发工作就和我描述的有一定的区别了。

哦,自学编程,好问题。我很适合,按说我原来的专业和兴趣是经济和哲学的。

01年接触C编程,02年接触网页编程,后来沉沦了几年,和计算机相关行业几乎都做过,卖数码相机、装机、电脑维护、平面设计,就是没有找到适合的程序员工作,直到07年。中间也有一直坚持看书,不停的学。04-05年,国内开始炒作前端重构,DIV+CSS布局,06-07年国内原来的JavaEYE(现在的ITEYE)带领流行起Ruby on Rails。

我比较特殊,从02年开始,接触网页编程,就直接用的是CSS,那时候做网页还用Table+Gif布局,然后那时候还特别沉迷JS特效。所以到了04-05年,国内流行前端重构的时候,当时如果花点时间多去碰碰灰,可能就能找到适合的工作。不过我是拖到了07年,也的确是通过学习Rails,看了几本Ruby编程思想和哲学的大砖头书以后,突然就对面向对象编程开窍了,也许是厚积薄发吧。

之后开启了疯狂跳槽的阶段,先是去了广州某个建筑门户网站,主力是做JS工程师,虽然的确征服了一众后端开发,可是这个团队的执行力不太强,制定各种开发规范,前端规范,从不执行。

或者是我年轻气盛吧,几个月后,接着跳槽去TCL,开发一套办公系统。但TCL那种养老环境,我不喜欢,继续跳去了当时广州某个门户网站。

那个门户网站的职位是我喜欢的,前端负责人,负责前端重构,那个公司当时前端和后端闹得不可开交,天天嘴炮,但凡开会总会变成吵架。虽然04-05年国内某些有识之士开始提倡前端重构,但这股风刮去门户网站的时候,其实到了07年才开始。所以,前端天天怼后端这不行那不行,这不符合规范,那不符合语义化要求。嗯,严重的时候,前端就罢工,影响非常不好。

当时那个门户网站在推一个自定义皮肤的博客系统,嗯,今天有那么多css编译工具,要弄自定义皮肤当然很简单,不过那年头,吼吼(顺带一提,07年,前端是个屁,和今天的地位不可同日而语,当年也没有webpack,jQuery也不是当红炸子鸡,而是那个叫做Prototype的框架。单元测试什么的不存在的,手动刷新吧,还有当时要兼容IE6/7和火狐浏览器,那时候的网页字体还清一色是宋体)。因为前端不配合,后端强力推,结果那个项目好像一泡屎一样,做了大半年,依旧无法运行起来,投入了大量精力,接近翻车状态。所以我过去以后,三下五除二,收拾了那帮闹事的前端,然后就开始重构。那时候其实对我个人技术也是一个考验,据说当时的技术总监是国内Oracle社区的版主,总之大牛,外加一群C#高手,我嘛,某程度上人家也是看笑话那样看待(毕竟不是正儿八经的科班出身)。不过结果当然是解决问题了,几万行JS而已嘛。因为我试过三天三夜没回家,一直在公司待着,那个技术总监后来总开玩笑说我是神一样的男子……这里面是不是有别的含义,我到现在没想过。

那时候年轻,反正搞了几个月吧,项目正式上线投入使用,公司给我分了期权,不知道为啥我又没兴趣了,期权是什么,可以吃吗?后来据说这个门户网站,完成了A轮融资,反正是过了几年滋润日子,然后,就没然后了,和众多曾经的门户网站一样,消失于滚滚红尘中。不过我事后总在想,也许那时候没走,留下来混吃养老等死,maybe会走上人生巅峰?谁知道呢?

所以马不停蹄的,在同学怂恿之下跑去创业,创业内容就不谈了,熬了大半年,开始有收益了,只是同学管钱,拿着钱去浪别的项目,后来碰上金融海啸,加币贬值,最后不欢而散。

接着是遇到一个双选题,网易网页部门当时找我,想做一个类似jQuery这样的前端类库。挺有意思的,去谈,三面免试,只是坐而论道。不过这过程,我大致了解他们网页部门的情况,当时是游戏部某位大佬主导时期,网页部,确切的说,是网页广告部的前端组,是个长期被人瞧不起的地方。我不否认他们想做一个jQuery这样的类库的决心,但是,作为经历过大风大浪的人来说,如果不能在一定时期内掌握到绝对权力,很难在大企业里面掀起什么风浪。什么,试用期6个月,再见了您!

所以最终选择另外一家港资企业,名字具体就不说了,当时这个企业定位是公关媒体公司,早期是做百威官网,说是谁负责这个项目吧,谁未来做为技术主管,其实谁在乎这个技术主管呢?权力如果不能做我想做的事情,不如不要权力。正因为这幼稚的想法,虽然解决了开发上的重重难关,不过在人事斗争上败下阵来(当年那个竞争对手据说现在已经在某上市公司养老了)。

后来自己接外包沉沦了一年多,鬼使神差的又回了这家公司港资公司。

不过当时这公司也是到了翻车边缘了,嗯,我不知道为什么,很喜欢收拾残局,所以我就熬了几年,把这个公司从生死边缘,熬了回来,最嚣张的时候,某个和IBM合作的项目,嗯,你没看错,是IBM,我一个人对着十几个Java开发,这里不行,我教你,还是用我最熟练的技能,JS。后来IBM相当重视,从上海还是哪里专门掉了一个工程师来专职负责优化dojo这个框架(那年代流行requirejs,dojo基金会收购了requirejs,可是实际上dojo那个如梦似幻的框架,真的用requirejs加载的话,会成为刷爆服务器的神器。没办法呀,你自己指定非要用你家的框架的。)。其实要说,互联网技术公司有多不靠谱,你看IBM就知道,技术人力就那么多,屁股决定脑袋,成本就那么多,再多的人也请不起了。不出名的企业就没办法了,真的出名了,项目多到做不完,IBM也好,巨硬也好,该怠惰还给你怠惰。

后来和港资老板在技术上、未来发展方向上,发生了分歧,我就拜拜了您嘞。

在前面这些年里,我形成了许多个目标,年轻嘛,要给自己设立一些目标。从那之后至今,确确实实的说,我是在追逐着自己的目标。也基本都一一实现了,目前正处于倒数第二个大目标。和不同人往来合作,起起伏伏,跌跌宕宕,被最出人意料之外人的坑得惨不忍睹。现在勉勉强强的活着吧,哈哈,死不了,火不了,也发不了。

编程,的确改变了我,改变我的人生,改变了我的生活轨迹。成为程序员,你必然会养成一些良好的习惯,才会将你逐渐推上一个成功的位置。

今天比起10年前的光景好太多。真的学编程,如果你真的掌握了,想找到工作,并不难。我面试,其实简历怎么写的,看完就算了,简历写的精通、熟练什么,80%面试再考他,别说太复杂的,稍微有点变化,就完全懵了,这怎么也敢写精通呢。特别的,你需要有一颗敏锐的心,每个时期的疑惑,都不要放纵他过去,一个问题一个问题扎扎实实解决,总有一天你也会成为大牛——不过你真的要赶快。

除此之外,你说自学net,我想说,巨硬呢,已经错过他最辉煌的年代,netcore早五年出现,也许今天光景大不相同。所以,你学.net,要想清楚自己目标是什么,期望跻身那个行业,才确定选择.net。如果可以,我希望劝你试试python,毕竟目前大火,而且的确后端开发、运维经常会接触到python,涉及面、适用度非常广。你现在开始学,就要赶人工智能这一趟车了,不妨朝这个方向多恶补恶补。

如果可以的,最好找《计算机组成原理》、《编译原理》、《算法导论》、《算法与数据结构》等几本基础书看看,把基础恶补一下。最初看这些书,我真的完全看不懂,看不懂我就抄,抄到几乎能背,然后再日后工作中再慢慢消化理解。毫不夸张的说,那几年里,计算机构成原理里面的图,整天在我脑海里浮现,一闭眼眼前就浮现那些流程图,还有一些基础理论。后来在某个时期,很沉迷算法和数据结构。读这些书很苦逼,但是的确能将你的编程水平提升上一个阶段,能从更接近计算机和汇编本质去理解编程语言。只有看懂这几本书,你才能在日后的编程生涯中立于不败之地。

面向对象编程、函数式编程、面向切面编程、事件驱动、异步非阻塞、《设计模式》,这些编程方法、思想,也要一一掌握,非常非常有用,是你遇到编程瓶颈时的良师益友。无论如何,你应该要在你所能熟练使用的编程语言,哪怕是javascript,都能演练这些方法和思想。

如果立志做后端开发,线程,线程安全,锁,这些也要有所了解,比如你说.net,在C#是如何实现各种锁。不然,不如去学PHP或者node.js或者python。不能很好理解线程,用C#做后端就是坑队友。

不要放纵自己,如果你真的想进入这一行,你也许只有开头那几年,有比较多的时间去学习,去看书。也只有那几年,你能孜孜不倦的去吸收书本的知识。随着工作开展深入,随着业务的纠缠,你慢慢就会被讨论、需求确定扯去大量时间,慢慢的,工作就会牵着你的鼻子走,以后你想再有翻开一本书的时间,也很难。

本人2015年毕业,非985 非211 二本,物联网工程(其实特别的坑,有用的东西都没学到)。毕业后就一直在家学C++,做了很多作品,有http服务器(带数据库,多线程的),有图形渲染的(DirectX11,DirectX12) 有GPU计算的(并行排序算法)。

图形渲染只能做出这种效果(模型是龙书代码里的,没有UV用不了纹理):

2018年7月开始找工作,

投的简历要不然问我有没有工作经验,我回答没有,他们就说考虑(其实就是挂了)。

即使收到了面试邀请,去面试了,他们也会说会跟别人商量,等消息(其实就是没过),而且经常被问到为什么毕业后3年都不去工作。


其中的一家公司做上机题,旁边的员工根本就不好好工作,上班聊天看知乎。看我用了C++11的写法,都过来围观。


这其中10月中旬面试了一家信息安全公司。面试的很不错,面试了将近一个半小时,都是一些数据结构算法之类的问题,面试官都说了我答的是最好的。

这其中问了:

如果你要做一个反病毒引擎,没有任何技术资料,那么你会怎么做?我回答招一些从其他反病毒公司离职的员工,从他们中了解一些反病毒引擎的技术细节。

还有开发Linux驱动,如果突然卡死了怎么排查?我回答使用qemu虚拟机进行调试。

让你去分析病毒,如果这个病毒是在硬盘固件中,该怎么办?(回答不出来)


技术面试是过了,HR薪资都谈好了。就等入职了。(这是到目前为止我经历的最好的一次面试,使我了解了信息安全业)

星期一接到电话,要再去一次。 这次是是经理面试,面试了半个小时,还是等消息。

不过最后还是没过。


10月收到了一家游戏公司的面试邀请,离我家特别近(走路15分钟)。我是非常想去那家公司的。面试聊了一堆图形渲染方面的问题(渲染流水线,光照,阴影)。

2天后,被告知已找到其他员工,没过。

然后又找到一家公司(做VR产品的,有自研引擎),先是去笔试,(有关C++的)笔试过了后进行面试,面试被问到多线程渲染,我回答DirectX11用DeferredContext 录制渲染命令到CommandList中,ImmediateContext回放CommandList中的渲染命令,DirectX12直接录制渲染命令到CommnadList 中,CommandQueue 中回放。

面试后等消息,几天后公司发给了一道题让我做:

使用图形API绘制一个立方体,立方体上贴个Chrome浏览器,点击有相应的反应。

就是这个,我用了10天做出来的(DirectX12)。

10月末恰巧知乎上认识了那家游戏公司的一名员工。

11月初那家游戏公司由发了面试邀请,又让我去了一次。程序部经理面试的,问了我一堆图形渲染方面的问题,

还问了DirectX12,Vulkan图形API与以前的图形API的特点是什么,我就说没有immediate模式,资源状态转换需要手工管理,渲染管线创建了就不可以更改,DrawCall全是异步的,Present立即返回(非阻塞),需要Fence同步。(DirectX11和DirectX12我都用过,他们之间的区别我是深有体会)

公司自研的引擎要移植到Vulkan API上。我就说我可以胜任,因为我会DirectX12,DirectX12和Vulkan不论是API上,还是概念上都非常相似,

面试了半个小时,过了,顺便参观了经理的办公室,书桌上摆着Physically based rendering v2 Real-time Rendering 4th(都是英文的) 我当时还惊讶RTR第四版这么快就有了。再跟HR聊,谈薪资。第二天接到录用通知,下星期一正式入职。

入职后,办公室的桌子上摆了几份简历,我看了看。就是刚毕业的大学生。都会提到Unity3D引擎,VR,HTC Vive之类的。我猜可能是培训机构培训出来的。

当天晚上把他们要让我做的题目连程序到代码和设计细节,使用说明发给了VR公司,告诉他们我已经找到工作了。


目前图形渲染的程序员特别难招,想我这种破烂学历,技术水平的,薪资都可以破万。图形渲染即使不做游戏也可以去GIS,地图公司(BAT都有,一般本科学历就可以)。

===============

2019年1月15日更新:

入职2个月,转正。

入职期间本人把引擎的地形渲染模块进行了彻底重构,性能达到了原来的3倍,今后还可以更快。

经常有人发我私信,怎样入门图形渲染,在此我提出一些不错的资源:

OpenGL的,初级到中级的,其中的PBR教程非常不错:

JoeyDeVries/LearnOpenGL

Vulkan的,极好的例子,初级中级再到进阶的,各个方面都有:

SaschaWillems/Vulkan

Forward+渲染器,我设计个Forward+渲染就是参考了这个:

GPUOpen-LibrariesAndSDKs/ForwardPlus11

NVIDIA GameWorks Demo OpenGL,Vulkan的,各种各样的例子,有WeightedBlendedOIT半透明,速度很快效果还不错。

NVIDIAGameWorks/GraphicsSamples

DirectX12 Demo,主要是D3D12的教程以及新特性的演示,有显卡交火(我自己设计的交火Demo就是从这里学的)

Microsoft/DirectX-Graphics-Samples

Nvidia DirectX11 SDK 有关地形水面渲染,曲面细分的例子,尤其是Island11这个例子:

Island11目前本人只能看懂一半。

Microsoft DirectX SDK 库已经不再需要,因为最新版本的Windows SDK已自带,但是其中的例子是非常值得学习的。

只看Unity3D,Unreal4相关教程的话很难了解到底层API,难以从底层API进行性能优化。如 ResourceBarrier 资源状态转换,我问过一个Unity3D的专栏作者,他就不知道 Unity3D 底层是怎样解决资源状态转换的(本人也不知道,没用过Unity3D引擎)。

这些讲Unity3D,Unreal4的,不会讲纹理布局,资源状态转换的,也不会讲多线程渲染在底层是怎样实现的,还有资源的异步加载的实现(单独的CopyCommandQueue)。

大多数Unity3D,Unreal4的教程只是初级教程,没有Deferred Shading,Forward+ 渲染,OIT半透明。

如果让你去试验一项技术,全公司没有一个人会,并且市面上没有任何的教材,有且只有官方的少量文档和Demo,你能上吗?这个对于图形渲染来说很常见,且是能体现出水平的地方。

最近要搞DirectX RayTracing,等公司配新显卡了就开始。

看到这个题目顿时忍不住要答一波一吐心中的苦水。

本人大专小学教育出身。毕业后,在上岗成绩还没出来之前就早早跑路来了杭州。因为在不跑就真的走不了了。

正题开始: 刚来杭州的时候做后端开发的堂哥推荐我学习web前端,因为相比后端入门快,市场需求更大以后更好找工作。

于是我就拿了一套14年的教学视频 ,白天工作,晚上学习,休息日学习,总那段时间为学习放弃了太多东西。学习过程就不细说了(说多了都是泪),反正问题是怎么找的第一份工作。

大概在学习了半年之后,我终于开始找工作了,但那时候别说半桶水,估计也就半杯水一样。会个html,css,js,临时学了下jquery,连接口请求数据交互都不会,只会写几个页面。然后我就各种招聘网站海投,只要有面试就去,期间还各种被拉进培训班打击一番我让我培训下会安排工作。

那时候住在下沙那边,但是求职的范围是全杭州,每天面试两三家,然后各种被打击,一是我专业不对口,学历也低,自学的技术也确实不咋地。公司面试初级程序员感觉主要还是看你技术。

这里说几个面试插曲

有一次电话有人邀约我去面试实习生,我就乐呵呵的跑去了,但进了才发现那是家培训机构。心里想着来都来了,就看看你搞啥子名堂吧。后来那个招待我的人也很诚实,表明了他们做培训(因为那一间间坐着上百号人学习的教室在那明摆着)。但也说明了他们有自营产品,和外推程序员的业务。给我一张卷子,让我做完,并且很一本正经的说“这些是初级的一些基本知识,你可以做到六十分及格的话,我们欢迎你来我们公司实习,但做不到看你有没有意愿了解我们的培训课程”。然后还说了我自学出来的什么什么不系统,现在市场饱和一大堆。当时我就听的一愣一愣的信了。

结果我当然做不到了,好像答了个四十分钟左右吧。做题时我用手机求助一个一年多前端开发经验的,他说这些题目在实际中用不到,而且对于我们初级的人来说也太难了。在听了我当时的情况后鼓励了我一番别泄气。

后面我当然没去培训了,那个题目我现在想起来都觉得这尼玛明明是套路啊,先打击我的自信心(虽然我当时的确打击的体无完肤),然后再给我推课程。

还有一次是在一家挺大的公司面试。去的时候那个给我第一轮面试的经理对我印象还不错(大概的做过销售和自身经历原因,说话可以做到自信满满)。但是到第二轮技术面试,一个女的前端对着我一顿问题我。把我问的怀疑人生。她走后经理跟我说,在技术上,如果满分一百分,你只有三十分,啊啊啊啊啊啊啊,蓝廋

但他还是再给我一次机会让我第二天去去复试。

于是第二天我心情忐忑的去了,公司给我安排了一个网页,让我写个静态页面。

嗯,对我来说,写这个小意思,但是写完后,在ui上算是基本还原了。轮到她检查一番调试后。你这个标签用的不对,这个语义没了解清楚。轮播图明明用这个方法更简洁更合理,你偏偏要用这种。总之又是一顿打击,我就默默收包走人了。当时走到楼下回头看到那栋高楼大厦,已经连续面试了半个月二三十家我在想我特么怎么真的是菜鸡吗。

说这两个例子是想表明,那个时候的我,是真的菜。

而且我在开始找工作时,想的是:嗯,大概找个三千块的实习就差不多,将就一下吧。

过了十天后,我在想:哪怕给我一千,只要可以学到东西,我都愿意呀。

又过了几天,我内心感叹:我不要工资了,求求你收留我吧,让我跟着学东西吧。

于是我有朋友开始慢慢有人推荐我伪造下简历。但是个人不是很能接受,况且我觉得不会就是不会,还很容易揭穿,那样更难堪。

后来在我没有要求的前提下,在余杭找到了第一份工作。详细如下

在某招聘app上 我看到一家找前端实习的,就点进去看到实习生前两个月没工资,后面从2500起加,三个月调一次。我就觉得这个这么狠,应该要求不高吧,试一试。

。。那是个风和日丽的下午。我从城东花了两个小时大概三十公里跑到城西余杭面试,提前约好了三点见面,我也准时到达去了这个第一次感觉怎么这么山的地方。公司在一楼,那种小型创业园。进去里面光线很暗,有三四个在里面敲着代码,去的时候老板不在。我坐在那里等了大概半个小时,老板来了后亲自面试问了我一些基本的问题。我也实事求是的回答,给他看了自己写的一些静态页面项目。后来他直接给了我一道面试题,做一个页面,这个页面跟上次那个对比。完全是小清新啊,不过但是因为那时候面的怀疑人生的阶段,也是内心没敢抱太大希望。我就从四点多左右一个人在角落用电脑写了一个多小时。后来写完了,公司也下班了。但他们却跑进会议室去开会了,我就坐在那等了一个多小时没敢去打扰。

到了七点多,公司其他人都走了,老板还一个人在里面。大概又是半个小时 他出来看到我后一句“你还在啊”

what ?你是把我忘了吧。

看了一会我写的页面后。

他问我知道网上他们对实习生的待遇吗?

我说知道 我能接受。

你在下沙,跑这边来工作,会不会吃不消

不会,我可以搬过来。

行吧,你要来就过来吧。


那个晚上,八点多,我在公交车上差点都苦了(就是鼻酸),公交车的玻璃大概知道我特么有多兴奋,我马上告诉了我远在他乡最好的兄弟和喜欢的妹纸。(

嗯,高兴的东西,忍不住要跟那么些人分享)。

没错,我找到了第一份工作,住的地方离公司三十公里,每天来回六十公里,四个多小时公交车费18块钱(当时很穷,再跟我哥合租中,房租都是他帮我垫的)。我就这样坚持了两个月。直到老板给我开工资了,我才敢搬过去。因为之前真的我怕,余杭本身就偏,我怕当时公司呆不下去,我就真的在余杭区也找不到工作了。

后来我搬过去后,开始天天加班,因为是外包公司,活是干不完的,我当时特感激老板给我机会,再加上意识到了自己有多水,更乖乖的去学习了。我就成了公司的工作标兵,虽然也没几个人,但老板就喜欢加班的员工啊 ,周六也不放过,只为了学到东西。因为之前真的苦怕了,现在能学到东西,感觉真的累什么的都不算啥。只要有目标,工作苦点好过心里对自我怀疑,对未来迷茫的感觉千万倍。老板也算仗义,主动让我两个月加一次工资。

然后说下现在的情况,工作一年了,暂时月薪税前8k,虽然不高,但对自己这一年的成长还算满意。现在是第二家公司。工作相对于不忙了,以前自学加上家公司工作忙的时候丢的一些爱好,生活也在慢慢捡回来。如果有同样自学在难找第一份工作的人,希望你们也可以如愿。

这是我第四次作答,不知道有没有人评论啥的,毕竟老夫写了一个小时啊。现在想答知乎了,就感觉自己在慢慢学会去生活。困了困了,明天还要上班。晚安,杭州——

更新下,当时6月份差不多就做完练手项目了,https://github.com/313715295/demo 这是我当时做的~有点烂,不过当时水平也就这样,可以参考评估下~

没法和厉害的人比,说下我的情况吧,可能比较适合大众,我比较懒,拖延症,我相信很多人比我努力。

91年的,11年专科毕业,药学专业,不喜欢医药行业,然后做了别的行业销售,前后混了6年日子。期间有想过转行,但可能太安逸了,一直没执行,到17年的时候,一个是年龄,另一个是业务压力越来越大,我自己又不喜欢。然后就4月份直接辞职了。不知道有没有玩魔兽世界的,哈哈哈,那段时候还在家打了几个月魔兽防御系列的挑战外观,7月份真腻了,afk。玩各种单机,玩王者荣耀,到10月份的时候差不多感觉玩腻了,然后开始学习,期间也会玩玩单机游戏调剂一下,18年4月份学差不多,开始做项目,5月份来杭州开始找工作,顺便重构项目,7月15号找到第一份工作6k,3个月后转正,我也离职了,开始找第二份工作,11月12号找到第二份工作12k,现在3个月多一点,最近技术主管让我6月份提加薪到15k,我自己的目标是今年加薪到18-20。初步介绍了一下,开始说下我的经历吧。

很感谢我的一个朋友,我是水rl+水T,wlk的时候有个小团体,盗贼是个架构师,期间一直给我指方向,解惑。

当时我搞不清楚后端啊,前端这些,以为app是一个人搞的,我说,我想学安卓,做app~我朋友说安卓市场比较饱和,让我先学下Java看看,然后开始了Java路线,话说我还是喜欢做后端~

开始买了java核心技术上下册,发现太深奥~然后决定先看视频,从极客学院和慕课网上找了14 15年的免费基础课程,两套都看完了,差不多有点了解了,然后有次一个帖子上看到how2j这个网站,尝试着看了下,发现整理的很全面,我朋友帮我安排了一下学习顺序,java基础~进阶这些学完,然后了解了一下前端,学了个jquery,再学了javaweb的一些知识,然后开始学框架和数据库,mybatis,spring >ssm > springboot,了解了nginx,git,redis,mq,maven。现在基本都是了解那种程度,其中蛮多东西都还不太懂,然后开始了做实践项目的过程。

实践项目决定做一个小商城,包括商品列表,展示,购物车,下单,以及个人中心的订单列表,管理员的商品管理,订单列表。支付,分类,详情,物流啊等等都没去考虑。其中跟着how2j的教程学了怎么部署项目到服务器。

第一次做的比较简单,就不太细说了,开始投简历发现基本没回音,然后我朋友说我作品太烂(前端太丑),加上了解了一下分布式,决定开始重构,最后成型的时候前端用了bootstrap,后端是springboot,做了maven模块化,拆了用户,购物车,订单,管理4个业务服务,用的dubbo,做了redis缓存以及activemq。

6月的时候开始海投简历,原生态,没做任何编造,然而依然没啥面试机会,我记得投了400多份,好像面试就10家左右,基本都因为没有工作经验被拒了,当然每次面试都会发现不会的地方,然后去了解相关知识,其中有一家愿意6k让我实习3个月,然而因为时间问题(礼拜一面试的,还一家约了礼拜六)错过了,1个多月还没找到工作,开始有点压力了,然后我妥协了,开始改造简历1年,效果好了一点,但是没差多少,大部分公司都想要3年以上的。7月10号左右面试了一家,6k,让等通知,后面让我15号去上班,算是开始第一份工作了。

第一份工作是搞p2p项目开发的,类似外包。有个参考项目,然后以这个项目代码复制其他项目,适当更改需求。公司也是刚组建的,一个前端,一个安卓,一个ui,加我一个后端,技术主管也是后端,不过他主要搞服务器这些。第一个礼拜前端和安卓写页面我熟悉项目,用的是springcloud,第二个礼拜我就开始改接口了,3个月6个项目,但是都只是开发,一个都没正式上线~在这里算是学了springcloud,巩固了之前自学的东西,然后顺带了解了下docker jenkins这些。当然其中遇到一些问题的时候我都会去查一下网上大神的解决方案,以及相关延伸知识,所以虽然技术一般,但是了解的东西还是有些的。

11月1号开始找工作(10.15提的离职,让我交接半个月),简历改成2年半工作经验,薪资要求12k。然后第一个礼拜心不死,面试完后坦白只有3个月多一点工作经验,得到一个等通知的结果,6天面试了10家吧,都没通知~

开始第二轮面试,决定不坦白了,面试了3家,第一家公司做短信的,现在开始转型,公司大概全部50来个人吧,是项目负责人直接面试的,面试完人事跟我说了待遇,说我要求的薪资没问题,然后适当画了下饼,说基本没问题,和老板说一下就可以了,结束后我刚下楼吃午饭就收到offer了。第二家后端应该20来个人,3个架构师,对我来说不是一个级别的,有点慌~然后先是其中一个架构师面试,然后cto,最后让等通知,收到offer压了我1000工资,11k。第三家公司总部是做二类电商的,原先项目外包做,现在决定自己组建技术团队,当时面试我的说公司不差钱,然后后续要改架构,然后就选了这家公司~然而公司不太懂互联网,需求乱的一逼,忙的要死,根本没时间改架构~

再补充一点,尽可能多思考,有自己的想法面试肯定不错。很多人学习的时候估计数据库连接池那么多的配置都很懵逼吧,线程数量配置多少会好一点呢,有时间可以去了解一下计算机真正可以同时运行几个线程以及线程切换问题。之前没用分布式之前用的shiro,用分布式后如果在网关做权限检验,shiro可能不太好使了,很多人说用oauth2,但是真的有必要么,有没有其他更适合需求的,看看网上各前辈的帖子,有没有产生共鸣的。

有点长,加上语文不太好,总结一下吧,尽可能学快速可以胜任工作的知识,其他工作后再做提升,我朋友一直建议我广度差不多就可以,多学基础(工作后,工作前学工具),其他的项目中以技术驱动学习。之前用魔兽世界打过一个比方,快速凑装等混进本,再慢慢做提升。


2019-03-16更新,如果没有必要别进外包,类似我这种情况的,大部分应该都只能先进小公司,千万千万别被同化了,好的要学,不好的不要习以为常。建议工作前多看看阿里规范,可以了解一下每条规范的意义,蛮多都藏着小知识,有些不太理解没关系,等工作后多回顾,可能你所接触的项目都没啥规范,但你自己写的时候最好要求高点,如果影响不了同事不用强求,但不要被同事影响了。最近在赶需求,新项目,但是之前有个项目比较相似,我们复制了一份,然后在此基础上修改,我的做法是该改的改,该删的删,毕竟全新的项目总想弄的好一点。然而负责人希望我直接复制即可,编译不报错就可以,有问题再当bug修改。我有点接受不了,然后他说你不要觉得你现在代码写的好,可能就是渣,而且过段时间看都是垃圾。我主管的意思其实是因为赶需求想让我转变下观念吧。但我想如果我妥协了,那以后看到不好的代码我也不会去修改了。代码编译通过,程序跑的起来就可以,细节和优化都是浮云。那就完蛋了


2019-04-04更新,进入行业之前,希望大家能提前建立一些思想,这个行业更多的还是看思维。不像卖油翁一样,我亦无他,唯手熟尔。这个行业靠的是学习,思考。写这些关键在于太多人偷换概念了,不加班怎么提升自己?光看理论不实践?能力是持续写代码提升出来的?

工作是最好的实践,稳固所学知识,没毛病,但955工作也是工作,不是996才叫工作。下班后有兴趣的时候学学新技术,写写demo挺不错的。如果996,我不知道你们啥情况,反正我肯定没精力再去学东西,写东西了~

每当你接触新的项目、新的技术的时候,加班研究,尽快上手是可以的,但当加班已经开始重复性工作,影响你自我提升的时候,是时候考虑一下对自己的影响了。

可能这就是矛盾点吧,只需要一小部分大牛,其他的能干活就好,干的越多越好。大牛有话语权,搬砖的没有。希望大家都有颗成为大牛的心,拥有话语权后可以为暂时没话语权的发声。

拿我自身例子来说,说点不要脸一点的话,和一般小公司2-3年经验的差不多,绝不是靠加班写代码提升的。

抵制996从思想觉悟做起,你没能力的时候,因为各种所迫,你可以妥协,没人笑你,但是你必须要知道996是不对的,对于你的提升也是不利的,牺牲你自己成全企业。希望大家都可以成为一个为自己,为家庭努力的程序员~

如何看待程序员在 GitHub 发起抗议互联网公司实行 996 工作制网站?

我当年面过一个人,没有学历的,

他直接拿了一个github砸在了我的脸上,当时我就觉得脸好疼。

最后没有录用他的原因可能是因为老板开不出他想要的工资。

以前没有github的年代可能用u盘装rar比较流行,现在github就可以啦。

我也参与过很多直接给我台机器让我给solution的面试,连github都不用。

关键是要自己过得硬,还要多尝试面试,

总能遇到有人愿意给你机会面一下,你抓住了就是胜利。

先说说我的经历吧,本人是大气科学专业,大三的时候决定转行。那个时候对软件行业一无所知,学过很多东西,比如我学的第一门语言是 ActionScript,用来做网页 Flash 的,当然现在也随着 Flash 的消亡一起成为回忆了。

后来我知道那段时间是迷茫期,因为不知道以后的路怎么走,就去学各种东西,不管有用没用。结果折腾了很长时间丝毫没长进。

转行其实很困难,靠自己琢磨,可能要走很多「弯路」。寻求过来人或网上的一些建议,能够帮你更加清楚自己想要什么,以及如何实现。

由于迟迟找不到方向,就想到了考研,想通过研究生阶段去把计算机的课程都补齐。于是开始风风火火的准备考研,买的书堆了半人高。坚持了一个月, 有一次机缘巧合,跟一个工作多年的程序员聊了我的情况后,他指出,研究生两年并不一定能学到多少,但如果直接实习 + 工作 三年去公司历练的话,说不定帮助更大。仔细琢磨后,觉得有道理,就放弃了考研的念头。

其实选择往往会跟当时遇到的人,遇到的事会有不同。这里也不是说考研不好,只是在当时我的情况下,它对我不是最佳选择。

但如何才能找到实习呢,基本很少有公司会需要零经验的实习生。所以还是得让自己有一技之长。这个时候发现了 Python 这门语言,相比于 C 语言而已,它的简单优雅让我着迷。于是便开始了学习 Python 的历程。期间学习 Django 框架,也了解了 Web 开发 ,总之这段学习过程带给我的不再是枯燥,而是成就感。

对于新手来说,Python 肯定是容易上手的。另外其实很多人学习容易放弃也是因为没有成就感,只是学习,可是学完用来干嘛,他们是不清楚的。所以设定目标,在解决问题的过程中学习会更高效。 这个可参考我这篇回答:非科班出身,如何成为程序员?

学了一段时间后,想尝试找找实习公司。这个时候遇到难题了,答主在南京上学,南京的互联网公司本来就不多,更别说 Python 相关的实习了。

幸运的是,扇贝在招 Python 实习,投完简历后,没想到还真回应了,出了个题,让我用 Django 实现一个简单的 cms 系统。我花了一个星期,写前端,写后台,学 git,传到 github 。虽然项目实现的真不怎么样,但居然很快得到了回复,拿到了实习的机会。

虽然后来在扇贝的实习时间不长,但那段时间,技能有了很大的进步,对程序开发有了个更好的认识。

很感谢扇贝的老板以及带我的 Mentor,没有这个实习的机会,估计转行会难很多。很多人会纠结选 Java 还是 Python。我的回答是选自己喜欢的,市场有它自己的调节机制,Java 工作机会多,但是竞争的人也多。当时科班学 Python 的人少,所以我才能捡到这个实习机会。

有了一定的经验后,学东西也会更加有目标。相比科班出身的,缺的是基础,工作当中用到的就会优先去学。

之后找工作又去了几家互联网公司,工作岗位都是程序开发,算是成功完成了转行。

其实从 2013 年开始转行至今,算是正好赶上了一波互联网的浪潮。在浪潮中有很多机会,争取到了就很可能改变以后的路,包括工作和生活。当然这只是个人的选择而已,没有好坏之分,一种选择,一种风景而已。


最后附上我之前的回答 非科班出身,如何成为程序员?

我大学专业是大气科学,观云测天气的那种,大三决定转行,开始学习编程,到今天一直在写代码,目前在知乎做后台开发,算是在程序员的道路上一条道走到黑了。工作这几年来也算是有点心得,分享下,希望对大家有用。

编程语言的选择

对于一个非科班的理科生来说,可能对二级 c 语言考试记忆犹新,为了应付个考试,花了好大的精力去学 c 语言,实在搞不懂就把答案直接记住,考试完了就忘得一干二净,所以对编程一直有种恐惧。其实技术一直在发展,编程语言也有好多,可以选择封装更加友好的语言,比如 Python。用简单的编程语言可以让你更容易达到自己选定的目标,这样也会更有动力去进一步学习。另外编程也不只是计算个数学题这么无聊,它其实有很多有趣的事情可以做。

项目的选择

我相信很多人都问过身边的程序员如何入门,得到的答案可能是去看数据结构,操作系统。其实这些东西都太基础,虽然说打基础很必要,但是很可能基础还没打完就烂尾了。所以我建议选择容易出成果的项目去学习,比如 爬虫,web 开发,数据分析。github 有这么多优秀的项目可以去学习,不利用实在太浪费。

自己折腾还是选择实习

对大学生来说,有足够的时间去学习,自己折腾可以更随意的选感兴趣的方面,实习的话有人带,更早的去接触实战项目,成长也会更快。对于上班族想转行的话,其实可以想想平时工作有哪些是重复劳动,可以用程序替代,写个小工具也是很有成就感的。


下面我举个具体的路线说明下

1. 首先,我们可以选择 Python 语言入门,语法肯定是要看一下的,推荐教程

  • 廖雪峰 Python 教程
  • Learn python the hard way

2. 学完 Python 语法后,找个项目练手,比如把某个网站的壁纸都下载下来。这就用到了 web 相关的知识,如 http 协议。我们可以采用 python requests 库来请求网页并下载图片。但是发现下载下来的是 html,所以需要 html 解析库来解析网页,如 Beautifulsoup。终于图片能下载了,但是如何批量的下载呢,这个时候,当然可以自己循环调用,也可以选择成熟的 scrapy 爬虫框架。当然写爬虫也会遇到各种问题,这个我们暂时可以不关心,可以拿一个 知道创宇的爬虫面试题 来测试下自己的爬虫水平。

  • 图解HTTP (豆瓣)
  • 快速上手 - Requests 2.18.1 文档
  • Beautiful Soup 4.2.0 文档
  • Scrapy入门教程

3. 硬盘塞满壁纸后,我们想做个网站把它展示出来,发现 Python 写 web 也很方便,于是直接上手,目前写 web 后台的主流框架有 flask, django 等。flask 小巧,django 功能完善。折腾了一段时间后,网站终于能跑起来,但是界面很丑,也没用效果。看来得学下前端 ,目前前端技术已经有翻天覆地的变化, react, vue , angular 看的让人头疼。作为新手,老三样 html, css 和 javascript 三种技术还是够用的。

  • flask 中文文档
  • django 中文教程
  • html 系列教程

4. 网站目前只有图片,它还需要展示图片的描述信息。描述信息可以再去网站爬,但是如何把信息存储起来并且和图片对应呢,这个就用到了数据库。数据库有很多,如 mysql 关系型数据库,mongo 非关系型数据库。其实 web 后台的增删改查操作很多时候都对应了数据库的增删改查

  • mysql 教程
  • MongoDB 教程

5. 学了这么多,发现网站还是只能在自己的电脑上运行,于是开始折腾 linux 部署网站,python web 框架的话需要安装 gunicorn 或者 uwsgi 动态服务器,配合 nginx 做反向代理。

  • 鸟哥的Linux私房菜

6. 写爬虫的时候拿到了很多的数据,比如想分析下微博关注的人的社交网络,发现 Python 其实在数据分析方面也很有优势,比如 matplotlib 能做各种图表,pandas 解析数据的利器。

  • matplotlib
  • pandas

7. 到了这个阶段,你就可以进阶的学习某个领域了,当然也得拾起各种计算机基础,出来混总是要还的 /(ㄒoㄒ)/~~


上面只是一个例子,不过基本涉及到了入门的几个方面。


转行做程序员,没必要一蹴而就。可以给自己定一个个小目标,花一些时间慢慢完成他们。遇到问题先搜索,大部分的问题网上都有解决方案。还有一点是多看优秀的项目,多练习,程序员也是一个普通的工种,和搬砖差不多,唯手熟尔。


最后推荐一些 Python 相关的优秀资源

[stackoverflow python 问答](https://github.com/wklken/stackoverflow-py-top-qa)

[Python最佳实践指南](http://pythonguidecn.readthedocs.io/zh/latest/)

[系统设计入门](https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md)

[python 数据分析](https://github.com/donnemartin/data-science-ipython-notebooks)

[500 lines](http://www.aosabook.org/en/index.html)

[python cheat sheet](https://www.pythonsheets.com/)


欢迎关注 微信公众号「程序化思维」,科普程序那点事

做机器学习工程师,通常都要读过博。

即便没有写成岗位的必要条件,也慢慢变成了自然规律。

那自学成才的人类,要写怎样的项目经历,才能让面试官相信,自己也是有同等能力的呢?

一个叫做AdditionalWay的网友,在Reddit提出了这个直击灵魂的问题,引发了大量讨论,两天热度已经超过500

讨论版上,有许多人提出了中肯的建议:

工业界需要的技能

有位叫做po-handz的网友,他发表的意见收获了80分的高赞同,占据了评论区的顶楼:

把自己的项目投入生产环节 (launch into production) ,就能超越99%的应届生,也能超越大部分在位的ML工程师了。

对此,有人 (moravak) 表达了墙裂赞同:

这个“大部分”,其实就是≥99.9%



顶楼又补充说,很多人就算读到博士毕业,可能也没有自己把一个项目做到生产环节的经验

那么,怎样才算有这样的经历呢?

网友 (BernieFeynman) 简约地解释了一下:

搭些模型,不用非常非常厉害。但要让人能看到,模型在哪跑起来的样子,比如有个API可以调用之类的。

当然,做起来并不是一句话的事,顶楼详细描述了,一整个过程究竟能有多难:

比如,一般你不会只有一个模型,是有一组。所以,需要让这些大模型,加载在服务器的RAM上。
还要接受新输入的数据。这些数据,要和测试数据的格式保持一致,还要scale,该怎么scale呢?
推理要用GPU么?那样的话在AWS上每月可能要花1000刀,预算能支持么?
时序数据怎么办呢?你需要一个连续更新的模型,还要一直跟踪调参。
除此之外,你需要一个实时的、可维护的数据管道 (data pipeline) 。搞这个,比处理一个清晰干净的数据集要难多了。
最后的最后,你还需要一整套UI,网站,nginx堆栈,要做成用户友好的样子。

别说是刚毕业的博士,许多有经验的数据科学家也对这些东西一窍不通,因为他们可能只在自己专业的领域里工作,都是别人把干净的数据集交到他们手上。



你如果在这点上打赢他们,对企业来说就有更高的价值了。

简历不要踩雷

训练实用技能,只是一方面。

如果不想在简历筛选环节见光死,网友 (rudiXOR) 在一家“正在招聘ML工程师的中型企业”,总结了十大雷区,供大家参考:

第一,拿着一大堆MOOC证书。没用,我试过,quiz一路点下去谁都做得到。
第二,对Kaggle成绩过于自豪。许多大学生都参加过Kaggle比赛,他们也知道这种比赛和ML工程师的工作,基本没什么共同点。
第三,去了3个月训练营,从PCA到LSTM,几乎所有ML技术都修炼到了。真的没人相信。
第四,GitHub项目都是只提交过一次代码的那种。根本看不出是不是自己做的。
第五,GitHub主页是新的,一个项目都没有。
第六,模型只在toy datasets上测试过,没有再严肃点的项目了。
第七,每种语言都说“精通”。比如C++、Python、Java、C#……
第八,对照职位要求精心匹配了简历 (“Buzzword optimization for HR algorithms”) 。
第九,没有证明自己的数学/统计学知识水平。
第十,没有软件开发的经历。



就算前九条你都忘了,也可以严肃地参考第十条。网友在细数了雷区之后强调:

如果你是自学的,不要一上来就投数据科学家,或者ML工程师。
可以先申请数据分析师,或者软件工程师。
如果是自学ML,又没有软件开发的经历,我是不会请你的。

参考前文,如果没有读过博士,就要比博士多点工业界的经验才更有利。

One More Thing

不过,自学什么时候都不晚。

比如,谷歌大脑的研究员David Ha,在投入机器学习的怀抱之前,已经做到高盛的董事总经理 (MD) 了。



那么,各位也要加油啊。

Reddit讨论版还有更多建议:

https://www.reddit.com/r/MachineLearning/comments/c3e9qu/d_those_who_hireinterview_for_machine_learning/

责任编辑:
热门阅读排行
© 16货源网 1064879863