(2015年9月) 最近换了工作,面试了很多家公司想总结下,以便以后回顾知道自己是怎么走过来的。
入行背景:
我是半路转行做软件开发的,2011年7月大学专科毕业,大学专业是:机械制造及其自动化;2011年1月到8月底,在合肥格力电器工作多半年,2011年9月份开始接触编程。
本来只是看了《硅谷禁书》《李开复自传》书上有个观点,一个人千万不能年纪不大,就落后了时代,一定要学会用这个时代的先进技术,那就是计算机互联网技术。我深信不疑!
本来我只是想学习下搜索技术,人人都是讲互联网是个知识宝库,你要学会使用,所以我就想学学搜索,学学办公自动化,学学绘图软件,学学报表制作,以便我能进入机械行业的工艺部门,能在办公室工作,而不是在一线生产线。在一线生产线时,天天被要求做俯卧撑,受班长组长的批评训话,说工作效率低,工作不努力,没有达到规定产量达标,每天下班后总是几个可怜虫和我被留下来,免费加班两个小时,甚至更长时间,真是感觉很委屈很窝囊。个人性格腼腆,思的杂,想的多比较敏感,感觉不适应工厂的那种军事化管理。然后7月份领毕业证时就到北大青鸟咨询了下,有没有电脑培训班,后来在工厂上班,常常接到老师电话邀请,机会难得,速来报道。搞得我有点想离开工厂了,只差一个刺激,只要刺激了我的自尊心我马上就离开。
然后2011年8月27号左右,到郑州的北大青鸟翔天信鸽中心去学习编程去了。去之前老师告诉我.net非常简单,图形化界面拖拽后,设置下属性就行了,我在大学学过autoCAD,以为就像画图一样,我认为我是可以学好.net编程的。北大青鸟有个学士后课程,在线学习,那个课程学习者扮演一个角色,升级学习。后来我才明白,学编程如果没有老师,上来就学那种纯视频引导的课程容易走上歧途,进入死胡同,没有经验的人很容易就卡着学不下去了。我也不能幸免,我卡住了,我卡到了2012年底。
学士后课程号称三个月改变一生,三个月就就业变身白领,月薪6000以上,我当时也是自信满满,我在大学是规规矩矩的学生,没逃过课,也去过图书馆,没有特别擅长的方向,但是实验也都能做出了结果,班级综合成绩第二名,属于踏实型。我刚开始完全就是模仿入门课程学习,学编程前我一点编程都没接触过,只学过单片机和PLC还有数控,PLC当时学的很好,单片机毕业时都忘完了。
开始培训了,没有老师,没有讲课,前两周我就是到学校连上网,装上vs2010,登陆上学士后账号,然后开始学习c语言,笔记做的非常详细,也都能运行处结果,自己感觉很满足。两周后班主任老师,找我说你怎么不开始正式课程学习,我看你没有进度啊?我当时一愣我不是在学习吗?老师就说,你不要在那个入门C上徘徊了,你赶快开始学习C#,C#和C没有关系,你不需要看前面课程,然后我就开始学习C#。当时真是基础太差了,打字是一指禅,慢得特别很,然后我就开始学习C#的数据类型,if判断,while循环,for循环这些入门课程,那些在大学学过两年的同学都是一周多点都学完了,我硬是学了快一个月,从定义一个变量,到数组,到各种逻辑判断,到类的定义,继承,方法,到集合,学的非常细,做各种练习题,我自己不着急毕业,我想学懂学会。(因为开始学编程我还比较小,我1991年出生)。
后来班主任老师又找我了,说你不能这样啊,你的进度太慢了,都一个半月了,你还在基础这一块,要这样下去你怎么能过完年(2012年3-4月)就业呢?然后我就着急了,开始多看视频,不做练习题。这里回头提一下我用vs2010写练习时,刚开始我非常纠结于为什么写一行,写一个语句后面要加分号,我企图搞明白为什么,我经常漏写分号,然后就不到为什么出错,因为我不太明白语句这个概念,有几次为了一个很小的错误,我需要等老师30多分钟他才能跑过来帮我看一眼,说:“这不是很明显吗?少了个分号,着你看不到吗?”当时真的感觉自己太差了,老师不知道完全无基础的人的无知程度,他不知道我在程序面前有多傻,我无法理解为什么需要方法,我宁愿复制代码,我也不愿意写方法,当时我就是这么固执,类型这个概念我也是后来很久才突然明白,int类,和class Student 类,其实它们是一样的,都是一种类型而已,只不过在能存中不一样,在存储或者表达数据方面不一样。一个人无法明白,他没有理解的东西,当时我就是那样的状态蹒跚前进慢慢学习的。
然后快到十一了,当时在和一个女孩谈朋友,因为我从工厂辞职了,就没了收入,学习上也是困难重重,然后我就不想给她过生日,当时是真没钱给她过,因为从工厂了出来我又变为一个学生了,后来不怎么关心她就慢慢分手了,她也不再理我。然后就是就是继续学习,在学到关键字this,as,is关键字, 索引器,多态这个地方我卡住了,我怎么也学不通,我无法灵活变通的使用它们,再下来是学习事件和委托,难度一下子加高了,我不了解C语言的指针,我就无法理解委托这种奇怪的东西,我才刚刚搞明白方法是一段可以重复使用的代码块,然后委托怎么样闹不明白,这个时候学校的网出问题了,我对学校也有点熟悉了,同学也熟悉几个,网友问题,他们就要回家学,其实到家(租的地方)大部分都不学习,女生也不学,因为感觉蛮吃力的。
我跟着也回宿舍学习几次,慢慢的天气变冷了,宿舍特别冷,学校也特别冷,只看视频,不怎么做练习,发现到后面前面的东西又忘记了,然后就回头学,效率低下来,这个时候开始学winform,学习做视频上的练习,winfrom虽然简单,但是要做个和视频上一样的练习项目还是挺花费时间的,可能一节课,把练习做完需要两三天才行,当时没有这样学习过,其实我一直都没有培养出好的学习方法,以前学习都是上课45分钟,作业几十分钟搞定了,然后下一课。这个时候学一课需要做的练习时间非常长,然后自己就 把握不好,进进退退,企图把平台的知识学完,常常倒回去看多态,抽象类,接口,索引器,委托,二维数组,这些难点。然后几天一周下来,不知道自己搞到哪了,似乎这一周什么都没学会,现在看来是人在学习时常常高估自己的能力,编程不是高中背书,不是做数学化学题,它是技能,是需要大量练习和长时间实验感悟的。
到过年时,我学到winfrom了,然后过完年继续回学校学习,过了一个年,又忘记了一部分,然后就开始学习数据库,学习三大范式,数据库本来我是感觉挺简单的,也学得会,但是开始学函数,学子查询,学游标时,我又蒙了,后来我也明白,这个东西需要看多方面的资料,需要在使用中慢慢感悟,死劲看,死劲想是无法明白 的。这个时候还要学习IO操作类TextReader,TextWrite,StringReader,StringWrite,SteamReader,SteamWrite;文件操作类File ,Directory,FileInfo DirectoryInfo;XML操作XmlDocument,XmlNode等;还有序列化特性还有其他特性学习;这个时候我非常搞不明白特性这个东西,我感觉它很丑陋,后来慢慢明白它就是个标记,要给一个类加上点额外信息,不用特性用什么呢?就顺理成章了。
这里提一下,这一块学的差不多的时候,学校给了一个项目就是,模仿windows做一个资源管理器,要求实现树形菜单展示电脑上的资源,能实现新建,修改,复制,剪切,删除,序列化保存信息;时间是两周,这个项目我差不多以两周做完了,但是升级考试的时候,我怎么也考不过,这个是在线平台为了保证你不能随便跳着学习,防止好高骛远,然后我就考试不过去,然后就一直在前面耗着,当时我不知道这个考试可以作弊,可以试答案,现在看来那个考试的标准比较高,就像大学如果严格考试,题不要太简单,大专学校很多人要不及格一样,我当时怎么也考试不过去,因为难点我没学会也没理解,学会的也是死板硬套自己其实是没学会的,只是死板硬套的记住了一些东西。
卡住过不去,然后我就一边回头学习,一边深陷在事件,委托,多线程,序列化里面,一边慢慢迷失了方向,这个时候学校也没有继续找老师,因为以前的辅导老师离职了,完全没有老师指导了。学校网速一直没解决,经常掉线,应该是学校为了省钱,给我们三十多个学生拉了个10MB的网线,虽然不是人人都会同时看视频,但是,10MB让30个人分着用,网速自然也是一种折磨,我们当时也真傻不知道向学校*,还傻傻的尝试去练CMCC免费热点,我当时还掏钱开了半个月。然后很多同学都开始三天打鱼两天晒网,经常回到家中打游戏,说不去就不去了。
当时70多个学生报名学习.net编程,最后坚持下来的不到15个,我还是一直在苦苦挣扎的一个这个时候已经到六一了,后来知道我们是郑州北大青鸟第一批实验对象,学士后我们是河南在线平台的第一批学员,当时学习时,平台课程也经常调整,青鸟的平台的老师讲课说话全部是平音,发音标准,声音温柔,规范的不得了,几十分钟讲下来不知道他讲的哪个是重点,听课中不知不觉注意力常常分散,导致学习效率非常低下。我到现在都感觉,在线平台的老师如果讲课发音过去规范化并不好,因为从小到大听惯了老师,抑扬顿挫的讲课吼声。2012年8月到9月的时候我还在学xml,学习DataSet的结构,学习sqlServer,Ado.Net的对象,学习连接查询,资源释放。再后来我常常在家打魔兽,我把RPG地图都打边了,一边受了良心煎熬,练习下打字,偶尔看看平台的课程。总之是怎么也进入不了asp.net部分的学习,自然也就不谈就业工作了。12年底我提前回家了,我告诉我爸我在郑州玩了一年,我不想再玩了,我要到北京去学习,我要到传智播客去学习,因为我无意中学习了传智官网的入门视频,一下子明白了以前我怎么也不明白的东西,我发现没有好的老师,自己模仿视频是不行的。
到现在我一直不太愿意提及2012年这个黑暗的经历,面试我常说是2013年到北京培训,13年10月正式工作。再说2013年2月19号到郑州租住的黑暗房子收拾完退房,坐火车20号我到了北京,21号开始正式上课,.net培训,北京育新金燕龙办公楼。
2013年在北京培训,一直都还可以,但是6月9号毕业时,我的asp.net学的很糊涂,那个时候刚学完,老师上课讲,我什么都明白,然后以冷静下来,我怎么也进入不到那种融汇贯通的思路,然后对就业还是忐忑不安,因为东西是学完了,但是没有消化。然后我复习了,又学了一遍13年9月底30号结课。10月12号我到了第一家公司,面试官是传智播客的学长,看我培训经历是一个学校,问我session存放在哪?说下它的原理,就说没什么问的,然后我就到第一家公司上班了。
第一家公司是一家小公司,程序员在我在的大部分时间里是3个,后来是两个,最多的时候是六个还有两个是搞苹果开发的。
公司主要做医药行业的企业网站;
医药数据系统,内部的数据录入查询系统,还有对外产品,医药查询的,有客户端用winfrom做;
还有就是维护公司官网和合作伙伴的官网,做一些会议报名,社区文档下载,在线咨询预约等。
后来做公司微信开发;
行业商品展示网站开发;
医药行业电商网站开发;
后来14年12月股东闹矛盾,差不多公司都倒闭了,两个月不发工资,技术都走了,然后我就离开开始找第二家公司。
这家公司早期招的技术比较厉害,弄得东西都还可以,别的一般公司有的,我们都有,但是公司留不住人,慢慢的没有成长,一直是小公司;
这家公司开的工资是3.5但是包住,住宿条件还是挺好的。
说下技术:公司大部分是做网站,常用的框架就是三层,再加上工具层,通过类层。只要不是分布式,大量优化,别人能做的,公司也都能做。
第二家是医学教育公司;
主要做视频合成工具;
视频课件数据的分类,搜索;
这个公司给5.5,发到手里面4800多到4900多在北京,吃饭快一千省着吃,一千还要多点,然后交通费*百,一个剩不下什么钱,也学不到东西就想找个更好的,然后九月就辞了,出来尝试找个好的。
说下面试的技术点吧:
1,对于数据库优化你有什么办法?
2,强制提高网站性能有什么办法?
3,千万级,亿级数据查询慢,有什么优化办法?
4,聚集索引,非聚集索引的区别是什么?怎么用?什么场合用?
5,常用的集合类是哪些?哪些效率高?效率高的原因是什么?
6,权限管理,具体到增删改查,你如何控制页面显示哪些操作功能?
7,Lucene.net建的索引,这个索引的结构是什么样子?索引为什么可以提高访问速度原理是什么?
8,说一说简单工厂模式应用场景是什么?
9,说一说垃圾回收的原理,讲一下过程?
10,说一下单利模式的应用场景,都有哪些模式,区别是什么?
11,iis如何实现一个简单的集群,Session存在哪里?如何实现共享?
12,说下HttpModule和HttpHandle的区别?
13,说下页面的生命周期?从浏览器请求到结束这个过程?
14,说下webForm与MVC分别的优势是什么?
15,有没有用过WCF?说下webService的基础技术是什么?它是靠什么支撑的?
16,说下NPOI你是怎么使用的?说下你用过的数据导入,导出?
17,说下你在项目中用的缓存数据怎么实现?说下常用方式?
18,Memcached的内部结构是什么?它的原理是什么?
19,有没有用过自定义控件,如何在自定义控件中做一些控制?这个就是和那个权限管理一起提出来的。
20,如何强制提高网站的性能?你有什么方式?
21,有没有用过除了Jquery以外的其他框架?
22,数据查询常考的那个笔试题,学生表,课程表,成绩表,查询学生平均成绩低于60分的?(2)所有课程成绩都低于60分的
23,如何实现固定行专列?如何实现动态行专列?
25,你常用的存储过程有哪些?为什么使用存储过程?存储过程的优势是什么?
26,你说说EntityFramework的效率与ADO.Net的效率哪个高?这个问题是个坑,要分情况,我也不好回答?
27,说说盘古分词的原理?说说Lucene.Net+盘古分词这个搜索的实现原理?
28,说一说数据分类的实现过程?
29,说一说session,session的分类,说一说登陆信息存储如何实现多服务器共享?你有什么方案?
30,说一说你为什么从上一家公司辞职?
31,说一说,你对新工作,新公司有一个什么期待,什么想法?
33,说一说你的技术优势是什么? 这个问题被问了很多次,我不知道怎么回答,因为我常常 写简单的css,+html布局,+JavaScript控制界面+ajax请求json数据,还有一些ajax操作+弹窗插件,+zTree+Jquery autocomplete+在线编辑器+百度Echarts+加数字分页+加用户控件+加模板页+加数组对比+加正则匹配+Lucene.net+盘古分词站内搜索+多图片上传插件+xml读取队列控制+ffmpeg命令行使用+多线程界面分类使用委托+HttpHandle实现请求截获,信息判断+sql数据合并stuff,xpath等+单例模式,+Global信息统计差不多就这些,两年经验没有特长。
34,有没有学习过其他语言?懂不懂java?
35,懂不懂非关系型数据库?
36,JavaScript作用域链说一说?继承如何实现?
37,jquery选择器都有哪些?
38,你们公司使用什么框架?后台框架使用什么?
39,多线程和锁的问题你是怎么解决的?
40,说一说抽象类和接口区别,你对类的理解?
41,做一个电商需要多长时间?一个人?多种在线支付。
42,你平常关注什么技术?你现在是否还在学习?你如何学习?说说你最近在博客园看的技术?
等等。
面试题比较杂,什么都有,大部分问题都开始有深度,当工作两年后,开始问比较深入的问题,数据在内存中操作的问题,一些数据对象的内存结构问题,大型网站高性能网站问题,数据库优化问题,学习接触其他数据库问题,接触其他学习语言问题,学习基础其他操作系统问题等。
写了这么多,我都不知道是什么主题了,总之就是编程并不像宣传的那样,三个月就可以学会,不可能。想理解一些东西必须经历一个很长的时间,还需要在使用过程中感悟。慢慢入门以后,还有非常多的东西需要学习。
领导都说我有点浮躁,我也确实感觉到了,但是每次被说在北京工作,一个月挣多少钱,剩余多少呀,一个月拿低工资都被刺激,所以就换了工作,决定到新公司放平心态,好好工作。
先说到这里,以后再说。