去年的这个时候,我正值大四上学期末,忙于找工做,10月份11月份就开始在某些招聘网站上投简历,可是面试了几家,都直接回绝了,缘由很简单,不少直接说不要没有经验的应届生,可是笔者在投的时候实际上是筛选过的,基本投的都是没有经验要求以及实习生岗位,基本上一轮pass了,可是也让我看清了现实,就是社招若是没有经验,除非特别优秀,否则公司是不会花时间去培养的。后面去了校招,校招就太多经验要求了,基本上就是纯技术的竞争了,说实话,那个时候技术竞争我是毫无优点的,论计算机基础,个人功底很是薄弱,论java基础,熟悉的也就是经常使用的API,可是涉及到源码,实现原理,JVM等部分就不能应对了,还有多线程以及网络编程这一块也不够深刻。幸运的是,校招看中的第一家公司录用了本身,如今想一想也是缘分啊,投了六家,还有一家人事也通知我过去上班了,我权衡了一下,回绝了,选择了第一家更大的公司。前端
实习前到毕业那段时间,大概面试了十多家公司。笔者如今仅能凭记忆总结一下当初面试问过的问题以及一些笔试题。有些问题比较深入,不少记不清了。简单罗列一下。java
接下来才是我要说的重点,就是一个程序员本该具有的素质。说实话,对于我这种非科班又是自学的人来讲,走了很多弯路。抓不住重点学,就会很是迷茫。弯路惟一的价值就是不断买教训,不断从新认识领悟。
计算机与科学技术这个专业中,有几门课程是很是重要的:程序员
计算机组成原理angularjs
计算机操做系统面试
计算机网络(惟一学过的)算法
数据结构与算法sql
编译原理数据库
离散数学编程
我的认为前面四项是重点。而后掌握一门编程语言,这就是一个程序员的本该具有的素质。
万丈高楼平地起,再好的技术实现都逃不过这些底层的东西。之前常常吐槽大学教的东西是没有用的,别的专业我不敢说,可是对于IT这一行来讲,计算机课程是很是有用的。但是这种重要性咱们在大学里是体会不到的,为何呢?第一,大学教的纯理论,真正实践的机会不多,固然没有真切的体会。第二,这些课程很是枯燥,可以沉下心来学好的人很少。第三,大学老师大部分教学一套PPT用几年,教学模式固定化,也不能结合实践讲出太多趣味性的东西。固然啦,教学只是辅助,学好必须得靠本身。
即使是科班的学生,真正学好这些课程的人其实并很少,因此一个程序员本应该具有的素质许多人也不能达到。笔者本身更是不具有这种素质。固然啦,这并不影响咱们完成基本的开发任务,并不影响完成增删改查。那为何我还要强调这些素质呢?
靠技术吃饭的人,多多少少都会有危机意识,技术更新那么快,如何让本身多年后依旧屹立不倒,那就是这些底层的东西,若是不利用业余时间弥补底层的东西,可能过不了两三年就会遇到瓶颈。固然,学习是有时间成本的,你只能慢慢去弥补这些知识领域,保持学习,量变终究会质变。那个时候,你会站在另外一个新的高度。小程序
除了上面的课程对应书籍外,我下面推荐主要是java程序员的看的书籍:
GitHub(全球最大的同性交流网站,这是程序员必须上的网站,里面开源项目特别多)
CSDN
知乎
博客园
SegmentFault
慕课网
掘金
伯乐在线
固然,除了这些网站以外还有一些其余一些网站,由于不太主流,就不做推荐了。
最近笔者在掘金发表了一篇文章:多线程并发篇——三件兵器
https://juejin.im/post/5bfcb99cf265da613e21edd5
让我意外的是这篇文章得到了一千多的阅读量,并且发表不久就登上了后端热门栏目,真的是有点惊喜。
工做一年,我在公司学到了什么呢?
实习的时候,进入了研发部门,项目经理刚开始并无安排项目,只是让咱们研究一下单点登录系统以及权限系统,那个时候实际上是最头疼的,一个工程那么多代码,不知道从何看起,也不知道怎么跟其余系统进行对接。后面,终于能够开始参与一个项目,设计表结构的时候还用了外键约束,其实外键会影响数据库性能,最好在程序中自行维护表的关联关系。那个时候,复杂的子查询不会写,不懂添加索引,maven不太会用,SVN不熟悉,写的代码不规范,Linux命令不熟悉,不会部署应用,这些东西其实都是在项目中才真正熟悉起来的。说实话,个人代码水平可能更多的是在课外提升的,可是对于业务流程以及开发的各类开发工具是在项目中提升上来的。写小程序服务接口的时候,常常要测试接口,才学会了Postman这个工具。包括与前端对接的时候因为写的接口文档不清晰,常常把时间浪费在讨论接口的字段含义上。
大四下学期中期,我被调到了别的项目组,参与政府部门的项目。因为以前写的是后端代码,来到这个项目组却写了前端,就以为本身是否是偏离轨道了。还好刚开始项目组的技术负责人并无安排什么任务给我,只是让我熟悉一下这个项目组的项目,而后学学angularjs,说是学,可是因为没什么任务,上班效率并非过高,自己本身JavaScript就不太好,也没怎么深刻去学过,angularjs更是不懂,只是跟着网上的教程看看,敲一些简单的代码。后面新需求来了,没办法了,安排我作一个模块,只能硬着头皮作了,还好有以前一些样例能够参考,那就一顿复制黏贴,根据需求改一改代码,而后不断测试调试代码,虽然不知道怎么来的,但终归实现了功能,就这样,在不断的复制黏贴修改代码中,我慢慢了解的angularjs,也大概懂得怎么去用。这期间,我学会了前端代码的调试,对JavaScript也熟悉了很多,写sql的能力也有了必定的进步,由于有些时候须要些一些复杂的sql,特殊状况,须要写数据库的存储过程和函数实现。
固然,对于后端的学习,只能工做之余学了。
笔者当初误打误撞走进了IT,只但愿热爱工做,热爱学习,作好本身手头的每一件事,心里里不乐意加班(庆幸如今没怎么加班,但愿之后即便加班都在本身能接受的范围),但愿保留一份生活的空间。感谢你们的支持!!