一年工做经验的大专生程序员(java后台—实习篇)

1、文章背景

看着手中的毕业证,才发现转眼三年过去了,却仿佛昨日仍是新生报到那会。html

做为18应届毕业生已经工做实习一年了,2年学校+1年实习,相信这也是大部分同届生的现状。java

那么,一个萌新在进入职场的这一年都经历了什么呢?在校那会我是挺好奇的。mysql

因此想把过去一年的工做现状写出来,算是一份总结,但愿一年后,回过来看这篇文章,但愿本身变得更加优秀。jquery

其实一直想写一篇一年的工做总结,也但愿本身坚持每一年都会写一个总结,立个 Flag 明年补充。nginx

这篇文章利用闲余时间断断续续的写了两三周的样子,适合人群:在校或者即将进入职场实习的大专生。git

2、阅读步骤

我把这篇文章分为以下几个部分:程序员

技能
认知
总结web

3、技能

3.一、java 基础语法

基础语法,这每每是咱们找实习工做的一份凭证,以下整理一部分常常会用到的。redis

1publicprivateprotected、friendly 区别。
2、Collection 和 Collections 区别。
3、Collection 框架中实现比较方法、排序。
4、Overriding 和 Overloading 区别。
5abstract class 和 interface 的区别。
6、是否能够继承 String 类。
7、final、finally、finalize区别
8String 是最基本的数据类型吗、基本数据类型有哪些。
9String 和 Stringbuffer 的区别。
10string 字符串经常使用方法,字符串转化为整型数方法,整型数转化为字符串方法
11、switch 是否做用在 byte、long、string上。

12、说出一些经常使用的 集合类和方法
13Set 里面的元素不能重复,用什么方法区分重复与否。
14、ArrayList 和 Vector 区别,HashMap 和 Hashtable 区别。
15、List 和 Set 是否继承自 Collection 接口。
16、说出 ArrayList、Vector、Linkedlist 的存储性能和特性。
17、ArrayList 和 Vector 区别,HashMap 和 Hashtable 区别。
18try{}里有一个return语句,紧跟在try后的finally里的code会不会被执行,何时执行,return前执行仍是return后执行。

19、error 和 Exception 区别。
20、运行时异常和通常异常的区别
21、给出一个常见的runtime exception。
22、Java中的异常处理机制的简单原理和应用
23、Java语言如何进行异常处理,throws,throw,try catch finally表明什么意义,try块中能够抛出异常吗

24、两个对象值相同,x.equal(y)==true,可是却可有不一样的hashcode,这句话对不对,equal == 区别。
25、值传递和引用传递

26、面向对象的特征
27、是否能够从一个 static 方法内部发生对非 static 方法调用。
28、静态变量和实例变量以及静态代码块的区别、建立顺序。
29、Java中会存在内存泄漏吗,请简单描述。
30、描述一下 JVM 加载 Class 文件的原理和机制
31、排序的几种方法,了解。
32、什么是 Java 序列化,如何实现 java 序列化。
33、Java中如何跳出多重嵌套循环
34、Java中实现线程的方法,用关键字修饰同步方法。
35、同步和异步区别。
36、线程同步的方法。
3.二、Web 基础
1、了解 Servlet、Interceptor、Listener、Filter 
2、Http 请求,经常使用的 Get、Post 请求区别, 以及请求头、状态码概念。
3、Cookie 、Session 
5、javaScript 基础语法,以及 jquery 简化后的语法
6、Ajax 请求,跨域顺便了解一下

其实上边这两个部分,一点都不想写进来,由于这本该是在校掌握的东西。spring

3.三、版本控制
一、git、svn
二、代码冲突解决方案
三、分制管理

团队版本控制这块仍是很重要的,从身边同窗也有了解到,大部分公司选择 SVN 管理工具,因此颇有必要补充 SVN 使用的知识,平时能够锻炼本身,使用 SVN 或者 Git 来提交代码, 我平时的话,两个都有在用,一般本身的项目都是放在《码云》上边。

既然提到版本控制,代码冲突解决真的尤其重要,若是你不是独立负责开发一个模块,那么很难避免的就是“代码冲突”,因此开发中,提交代码以前必定要去对比“资源库最新代码”,确保没有冲突再去更新,或者提交代码。

补充一个工具,Beyond Compare ,代码对比工具,相信我你会用到的。

3.四、spring 核心

之因此单独拿出来,由于他足够强大,企业轻量级开发框架。

  • 一、Spring-IOC:控制反转,分开解释。
    -- 控制:强调对象是由容器控制的,控制了对外部资源的获取。
    -- 反转:之前都是咱们本身建立对象依赖对象,反转就是由容器帮咱们建立并注入依赖对象。

  • 二、Spring-AOP:面向切面编程,这个所谓的切片:aop 将封装的对象切开,而后找出其中对多个模块产生公共影响的部分,封装成一个能够复用的模块,这个模块称为切面,切面把那些与业务逻辑无关,却被业务模块共同调用的逻辑进行抽取封装,减小系统代码的重复度。

AOP 的解释有点官方,我的理解,使用 aop 技术,你能够对目标对象的方法进行加强处理,好比 a()方法,就是打印一个 syso("你好呀"),可是呢,若是采用 aop切面技术给与增强,你能够在这个a()方法以前以后均可以进行监听,好比打印 syso("你好呀") 以前打印一个"niceyoo",a方法以后打印一个 “2018”

若是你一点都不清楚 Spring 核心,建议搜索了解一下。

3.五、Spring 其余技术
  1. Spring事务:事务的出现是为了确保数据的完整性和一致性,一句话归纳:一次提交,要么所有成功,要么失败什么都不作。
    参考地址:https://www.cnblogs.com/niceyoo/p/8729525.html

  2. SpringMvc:简单明了的 MVC 框架。

  3. SpringTask:代码级定时任务,注解方式,能够将它比做一个轻量级的Quartz,使用起来很是方便,只需完成 Scheduled 表达式。

  4. SpringSecurity:用户权限管理,根据角色和用户,实现 UserDetailsService,进行自定义权限管理。既然说到权限管理,不得不提的就是
    Shiro,实际开发中,Shiro 使用相对更容易一点,至于二者的区别,建议搜索了解一下。

  5. SpringBoot:能够理解成 Spring 升级版,简化了 maven 配置,自动配置 Spring,无须手动配置 Spring ,无须各类烦人的 xml 配置。
    其实说到 SpringBoot 真的要画个重点了,特别流行,如今特别火的 SpringCloud 就是基于 SpringBoot 的,后面我也会多的写一些关于 SpringBoot 文章。

3.六、开源框架(Hibernate 、Mybatis)

这两个框架网上一堆的介绍,相信你也不陌生,因此不说什么大道理,根据我实际开发使用状况,作简要概述。

  • 共性:二者都是用来操做 Dao 层的,通俗一点就是用来操做数据库的。
  • 区别:Hibernate 不用手写 sql 语句,内部封装了大量经常使用方法,一样提供 HQL、QBC 支持 sql 编写, 而 Mybatis 所有须要手动书写 sql 语句;Hibernater 支持自动建表,只须要在实体 Bean 上加入注解,便可实现数据库表的建立,而 Mybatis 须要你本身在 mapper 中一一对应;Hibernate 配合 Spring Data JPA 或者 Spring template 也可实现 sql 语句的编写。
  • 总结:Mybatis 使用起来相对比较灵活一点,而 Hibernate 使用比较方便。
3.七、服务器

Linux操做系统,以 centos 为例:

经常使用简单命令:ssh、vim、ps、gerp、、tail,df、top,shell、chmod、sh、tar、find、wc、ln、|
目录结构明细:/etc/、~/、/usr/、/dev/、/home/、/etc/init.d/
服务端:jdk、tomcat、nginx、mysql、redis、neo4j启动与配置
nginx:负载均衡、反向代理、配置
java 环境配置;

实际工做中,最可能碰到的就是项目的部署,至于环境的搭建基本会由运维搭建,因此最经常使用的命令无非是 tomcat 里 start.sh shutdown.sh 脚本的执行,kill - xx 杀掉没有被中止掉的进程,catalina 日志输出等等。

一点建议:

我会建议你去买一台centos云服务器折腾折腾,这样真的很锻炼人,虽然你也能够在本地搭虚拟机。
其实我在大一的时候就有购买本身的服务器,域名等,我会以为这颇有意思,直到如今手里还维持3台服务器以上,配置的话因条件而异,备案域名2个。
至于服务器有什么用,好比部署本身练手的项目,搭 ssr,作个网站,赚点广告费…

3.八、数据库

开发中最经常使用的数据库:Oracle、MySQL、Redis(非关系型数据库)

Oracle\MySQL 平时本身使用的话, MySQL 使用会比较多,毕竟轻量级,至于二者的区别,实际开发真没多少差距,至少一年实习经验的我是这么看的。毕竟如今还停留在“增删改查”阶段。

Redis 非关系型数据库,这又是个重点,应用场景特别多,常常被做为缓存来使用,如面对数据高并发的读写、海量数据的读写等等。

3.九、第三方接口

一年的工做中或多或少的总会接触到一些第三方的接口:

  1. 支付接口:不少公司都会有商城项目,支付宝以及微信支付流程了解一下,详细资料能够参考官方文档,如今官方已经说得很简单了,像是统一下单,对接已经很方便。

  2. 七牛云存储:这个是本身私下作的项目,涉及到七牛云的文件存储、大文件上传等,公司通常存储都会用本身服务器,因此大文件上传,推荐 webuploader 分片上传了解一下。

  3. 微信公众号开发:这一年在公司独立作了两个微信公众号的小项目,刚接手的时候,也会有懵逼状态,多看官方文档就行了。

  4. 短信接口:这种算很简单的第三方接口,引入依赖,直接调用便可。但须要在第三方后台设置模板等,注意在先后台限定用户请求次数。

  5. 其余接口:邮件发送等。

3.十、电脑部分工具

开发工具:Eclipse、IntelliJ IDEA 、WebStorm
数据库工具: PL/SQL、SQLyog、Navicat
版本控制:SVN、Git
代码对比:Beyond Compare
脚本工具:xShell、Putty
FTP 工具:xftpportable
FQ工具:SSTap-beta、蓝灯
远程工具:VNC viewer
虚拟机:vmware
笔记工具:Evernote
记事本:NotePad++
浏览器:谷歌、火狐
其余:有道翻译、Hjson

4、认知

在帅张的影响下我更新了一个观念,人与人之间最大的差距,其实本质上是认知的差距。

傅盛说过这么一句话:所谓成长,并不来自于所谓的位高权重,不来自于所谓的财富积累,也不来自于你掌握的某一个单项技能。所谓成长,就是认知升级。

举一个例子—富人跟穷人的逻辑思惟:

穷人花 10 块,总奢望获得 100 块的价值,否则的话就以为亏了,而富人花 1w 块,若是能获得 1000 块的价值,他们就以为这钱没白花,可是即使如此,富人能够轻易获取 1000 块的资源,而穷人即使费劲九牛二虎之力获得 100 块的资源也差距很大。

再好比我花了 1k 买一些付费知识,就必须追求 1k 的价值么?这就大错特错了,我花了 1k,我能获得 1块 的价值,我就以为是值得,这就跟不少富人,花几十万让小孩报一个班同样,他们奢望小孩必定要在那个班上学到几十万的价值么?不必定,他们要的是小孩能比别人学得多一点,那就是值得了,这就是富人思惟。

但是认知,跟这个穷人富人逻辑思惟有个毛关系呢?

5、总结

结合上文+现阶段的工做经验作一个总结。

基础知识:参加工做后,发现基础知识若是很薄弱的话,真的要下功夫了,在实际开发中,用到最多的其实仍是那些基础知识,若是你以为本身在学校并无掌握牢固的话,黑马的基础视频颇有必要再看一遍,反正我是又看了一遍,25天的基础课程一周的时间就能够刷完。

代码规范:代码按照规范写尤其重要,必定要养成代码"洁癖",驼峰命名、尽可能多的采用英文单词命名,该空行的空行,该缩进的缩进,该回车的必定要回车。代码并非你觉得的写完就完事了,若是写的很烂,别说别人,n 段时间后,回头看看本身都不知道写的什么玩意。

投资本身:必定要舍得给本身花钱啊,腾讯不就一直在给你灌输这个概念吗,只要充钱就能变强,放在咱本身身上,充钱能解决效率。
必定要有选择性的、理性的投资本身、投资知识,你的认知,真的决定你从此的高度,花钱培训也算是一次投资。

学会搜索:不要一有问题就问别人,真的尝试解决过吗?我一直调侃百度不如谷歌,但大部分问题每每百度就能解决,搜不到?本身真的会搜索吗?

学会独立:有人会认为实习,就应该有人带本身,在校那会我也是这样,觉得进了公司有个大佬手把手教本身,一有了问题就问;事是这么个事,可是你必定要认识到这个“带”,不是“手把手”,终究仍是要靠本身,解决不了的问题,本身尝试实在解决不了再去问,一方面本身印象深入,另外一方面,不浪费别人的时间,若是你私下不努力,并不会有人手把手喂你饭吃。

其余技能:我以为拥有一点其余技能仍是颇有必要的,这会使你更有优点,好比我本身会 Android 开发,能独立开发简单的 APP ,有上架应用商店经验,这带给个人优点就是筹码。

时刻学习:必定要保持时刻学习,不要以为本身公司用不到就不用学了,你能保证你在这家公司一生?springboot、springcloud、Flutter、Vue、Angular.js、Echarts、Redis、Lucene、Shiro 、Elasticsearch、Ngix、Zookeeper、Dubbo、WebService、POI 数据导入导出\ 等等等等

最后最后:这一年里特别感谢技术管理人员的器重,以及同事的帮忙,学到了很多东西。同时特别感谢本身的大学老师-昌老师,入门启蒙老师。

博客地址:https://cnblogs.com/niceyoo


2019年7月20修改补充:毕业一年了,第二篇文章来了毕业一年的大专生程序员工做总结(java后台)

我建立了一个java相关的公众号,用来记录本身的学习之路,感兴趣的小伙伴能够关注微信公众号:niceyoo