⼀年⼯作经验的⼤专⽣程序员(java后台—实习篇)⼀、⽂章背景
看着⼿中的毕业证,才发现转眼三年过去了,却仿佛昨⽇还是新⽣报到那会。
作为18应届毕业⽣已经⼯作实习⼀年了,2年学校+1年实习,相信这也是⼤部分同届⽣的现状。
那么,⼀个萌新在进⼊职场的这⼀年都经历了什么呢?在校那会我是挺好奇的。
所以想把过去⼀年的⼯作现状写出来,算是⼀份总结,希望⼀年后,回过来看这篇⽂章,希望⾃⼰变得更加优秀。
其实⼀直想写⼀篇⼀年的⼯作总结,也希望⾃⼰坚持每年都会写⼀个总结,⽴个Fl a g明年补充。
这篇⽂章利⽤闲余时间断断续续的写了两三周的样⼦,适合⼈:在校或者即将进⼊职场实习的⼤专⽣。
⼆、阅读步骤
我把这篇⽂章分为如下⼏个部分:
三、技能
3.1、j a v a基础语法
基础语法,这往往是我们实习⼯作的⼀份凭证,如下整理⼀部分经常会⽤到的。
1、public、private、protected、friendly 区别。
2、Collection 和 Collections 区别。
3、Collection 框架中实现⽐较⽅法、排序。
4、Overriding 和 Overloading 区别。
5、abstract class和interface的区别。
6、是否可以继承String类。
7、final、finally、finalize区别
8、String是最基本的数据类型吗、基本数据类型有哪些。
9、String和 Stringbuffer 的区别。
10、string字符串常⽤⽅法,字符串转化为整型数⽅法,整型数转化为字符串⽅法
11、switch 是否作⽤在 byte、long、string上。
12、说出⼀些常⽤的集合类和⽅法
13、Set⾥⾯的元素不能重复,⽤什么⽅法区分重复与否。
14、ArrayList 和 Vector 区别,HashMap 和 Hashtable 区别。
15、List 和Set是否继承⾃ Collection 接⼝。
16、说出 ArrayList、Vector、Linkedlist 的存储性能和特性。
17、ArrayList 和 Vector 区别,HashMap 和 Hashtable 区别。
18、try{}⾥有⼀个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.2、W e b基础
1、了解 Servlet、Interceptor、Listener、Filter
2、Http 请求,常⽤的Get、Post 请求区别,以及请求头、状态码概念。
3、Cookie 、Session
5、javaScript 基础语法,以及 jquery 简化后的语法
6、Ajax 请求,跨域顺便了解⼀下
其实上边这两个部分,⼀点都不想写进来,因为这本该是在校掌握的东西。
3.3、版本控制
1、git、svn
2、代码冲突解决⽅案
3、分制管理
团队版本控制这块还是很重要的,从⾝边同学也有了解到,⼤部分公司选择S V N管理⼯具,所以很有必要补充S V N使⽤的知识,平时可以锻炼⾃⼰,使⽤S V N或者Gi t来提交代码,我平时的话,两个都有在⽤,通常⾃⼰的项⽬都是放在《码云》上边。
既然提到版本控制,代码冲突解决真的尤为重要,如果你不是独⽴负责开发⼀个模块,那么很难避免的就是“代码冲突”,所以开发中,提交代码之前⼀定要去对⽐“资源库最新代码”,确保没有冲突再去更新,或者提交代码。
补充⼀个⼯具,B e yond Com p a r e,代码对⽐⼯具,相信我你会⽤到的。
3.4、s p r i n g核⼼
之所以单独拿出来,因为他⾜够强⼤,企业轻量级开发框架。
1、S p r i ng-I O C:控制反转,分开解释。
-- 控制:强调对象是由容器控制的,控制了对外部资源的获取。
-- 反转:以前都是我们⾃⼰创建对象依赖对象,反转就是由容器帮我们创建并注⼊依赖对象。
2、S p r i ng-AO P:⾯向切⾯编程,这个所谓的切⽚:a op将封装的对象切开,然后出其中对多个模块产⽣公共影响的部
分,封装成⼀个可以复⽤的模块,这个模块称为切⾯,切⾯把那些与业务逻辑⽆关,却被业务模块共同调⽤的逻辑进⾏抽取封装,减少系统代码的重复度。
AO P的解释有点官⽅,个⼈理解,使⽤a op技术,你可以对⽬标对象的⽅法进⾏增强处理,⽐如a()⽅法,就是打印⼀个
s ys o("你好呀"),但是呢,如果采⽤a op切⾯技术给与加强,你可以在这个a()⽅法之前之后都可以进⾏监听,⽐如打印
s ys o("你好呀") 之前打印⼀个"ni c e yoo",a⽅法之后打印⼀个“2018”
如果你⼀点都不清楚S p r i ng核⼼,建议搜索了解⼀下。
3.5、S p r i n g其他技术
1.S p r i ng事务:事务的出现是为了确保数据的完整性和⼀致性,⼀句话概括:⼀次提交,要么全部成功,要么失败什么都不做。
参考地址:ht t p s://w w w.c nb l og s.c om/ni c e yoo/p/8729525.ht m l
2.S p r i ng M v c:简单明了的M V C 框架。
3.S p r i ng T a s k:代码级定时任务,注解⽅式,可以将它⽐作⼀个轻量级的Q ua r t z,使⽤起来⾮常⽅便,只需完成
S c he d ul e d表达式。
4.S p r i ng S e c ur i t y:⽤户权限管理,根据⾓⾊和⽤户,实现U s e r De t a i l s S e r v i c e,进⾏⾃定义权限管理。既然说到权限管
理,不得不提的就是S hi r o,实际开发中,S hi r o 使⽤相对更容易⼀点,⾄于两者的区别,建议搜索了解⼀下。
5.S p r i ng B oot:可以理解成S p r i ng升级版,简化了m a v e n 配置,⾃动配置S p r i ng,⽆须⼿动配置S p r i ng,⽆须各
种烦⼈的x m l配置。其实说到S p r i ng B oot真的要画个重点了,特别流⾏,现在特别⽕的S p r i ng Cl oud就是基于S p r i ng B oot的,后⾯我也会多的写⼀些关于S p r i ng B oot⽂章。
3.6、开源框架(H i b e r n a t e、M y b a t i s)
这两个框架⽹上⼀堆的介绍,相信你也不陌⽣,所以不说什么⼤道理,根据我实际开发使⽤情况,做简要概述。
共性:两者都是⽤来操作Da o 层的,通俗⼀点就是⽤来操作数据库的。
区别:H i b e r na t e不⽤⼿写s q l语句,内部封装了⼤量常⽤⽅法,同样提供H Q L、Q B C ⽀持s q l编写,⽽M yb a t i s 全部需要⼿动书写s q l语句;H i b e r na t e r⽀持⾃动建表,只需要在实体B e a n 上加⼊注解,即可实现数据库表的创建,⽽M yb a t i s需要你⾃⼰在m a p p e r中⼀⼀对应;H i b e r na t e配合S p r i ng Da t a J P A 或者S p r i ng t e m p l a t e也可实现s q l语句的编写。
总结:M yb a t i s使⽤起来相对⽐较灵活⼀点,⽽H i b e r na t e使⽤⽐较⽅便。
3.7、服务器
L i nux操作系统,以c e nt os为例:
常⽤简单命令:s s h、v im、p s、g e r p、、t a il,d f、t o p,s h e l l、c h m o d、s h、t a r、f in d、w c、l n、|
⽬录结构明细:/e t c/、~/、/u s r/、/d e v/、/h o m e/、/e t c/in it.d/
服务端:j d k、t o m c a t、n g in x、m y s q l、r e d is、n e o4j启动与配置
n g in x:负载均衡、反向代理、配置
j a v a环境配置;
实际⼯作中,最可能碰到的就是项⽬的部署,⾄于环境的搭建基本会由运维搭建,所以最常⽤的命令⽆⾮是t om c a t⾥
s t a r t.s h s hut d ow n.s h 脚本的执⾏,k i l l- x x杀掉没有被停⽌掉的进程,c a t a l i na⽇志输出等
等。
⼀点建议:
我会建议你去买⼀台c e n t o s云服务器折腾折腾,这样真的很锻炼⼈,虽然你也可以在本地搭虚拟机。
其实我在⼤⼀的时候就有购买⾃⼰的服务器,域名等,我会觉得这很有意思,直到现在⼿⾥还维持3台服务器以上,配置的话因条件⽽异,备案域名2个。
⾄于服务器有什么⽤,⽐如部署⾃⼰练⼿的项⽬,搭s s r,做个⽹站,赚点⼴告费…
3.8、数据库
开发中最常⽤的数据库:O r a c l e、M yS Q L、R e d i s(⾮关系型数据库)
O r a c l e\M yS Q L平时⾃⼰使⽤的话,M yS Q L使⽤会⽐较多,毕竟轻量级,⾄于两者的区别,实际开发真没多少差距,⾄少⼀年实习经验的我是这么看的。毕竟现在还停留在“增删改查”阶段。
R e d i s⾮关系型数据库,这⼜是个重点,应⽤场景特别多,经常被作为缓存来使⽤,如⾯对数据⾼并发的读写、海量数据的读写等等。
3.9、第三⽅接⼝
⼀年的⼯作中或多或少的总会接触到⼀些第三⽅的接⼝:
1.⽀付接⼝:很多公司都会有商城项⽬,⽀付宝以及⽀付流程了解⼀下,详细资料可以参考官⽅⽂档,现在官⽅已经说得很
简单了,像是统⼀下单,对接已经很⽅便。
2.七⽜云存储:这个是⾃⼰私下做的项⽬,涉及到七⽜云的⽂件存储、⼤⽂件上传等,公司⼀般存储都会⽤⾃⼰服务器,所以⼤
⽂件上传,推荐w e b up l oa d e r分⽚上传了解⼀下。
3.开发:这⼀年在公司独⽴做了两个的⼩项⽬,刚接⼿的时候,也会有懵逼状态,多看官⽅⽂档就好了。
4.短信接⼝:这种算很简单的第三⽅接⼝,引⼊依赖,直接调⽤即可。但需要在第三⽅后台设置模板等,注意在前后台限定⽤户
请求次数。
5.其他接⼝:邮件发送等。
3.10、电脑部分⼯具
开发⼯具:E c l i p s e、I nt e l l i J I DE A 、W e b S t or m
数据库⼯具:P L/S Q L、S Q L yog、N a v i c a t
版本控制:S V N、Gi t
代码对⽐:B e yond Com p a r e
脚本⼯具:x S he l l、P ut t y
F T P⼯具:x ft p p or t a b l e
F Q⼯具:S S T a p-b e t a、蓝灯springboot aop
远程⼯具:V N C v i e w e r
虚拟机:v m w a r e
笔记⼯具:E v e r not e
记事本:N ot e P a d++
浏览器:⾕歌、⽕狐
其他:有道翻译、H j s on
四、认知
在帅张的影响下我更新了⼀个观念,⼈与⼈之间最⼤的差距,其实本质上是认知的差距。
傅盛说过这么⼀句话:所谓成长,并不来⾃于所谓的位⾼权重,不来⾃于所谓的财富积累,也不来⾃于你掌握的某⼀个单项技能。所谓成长,就是认知升级。
举⼀个例⼦—富⼈跟穷⼈的逻辑思维:
穷⼈花10块,总奢望得到100块的价值,不然的话就觉得亏了,⽽富⼈花1w块,如果能得到1000块的价值,他们就觉得这钱没⽩花,但是即便如此,富⼈可以轻易获取1000块的资源,⽽穷⼈即便费劲九⽜⼆虎之⼒得到100块的资源也差距很⼤。
再⽐如我花了1k买⼀些付费知识,就必须追求1k的价值么?这就⼤错特错了,我花了1k,我能得到1块的价值,我就觉得是值得,这就跟很多富⼈,花⼏⼗万让⼩孩报⼀个班⼀样,他们奢望⼩孩⼀定要在那个班上学到⼏⼗万的价值么?不⼀定,他们要的是⼩孩能⽐别⼈学得多⼀点,那就是值得了,这就是富⼈思维。
可是认知,跟这个穷⼈富⼈逻辑思维有个⽑关系呢?
五、总结
结合上⽂+现阶段的⼯作经验做⼀个总结。
基础知识:参加⼯作后,发现基础知识如果很薄弱的话,真的要下功夫了,在实际开发中,⽤到最多的其实还是那些基础知识,如果你觉得⾃⼰在学校并没有掌握牢固的话,⿊马的基础视频很有必要再看⼀遍,反正我是⼜看了⼀遍,25天的基础课程⼀周的时间就可以刷完。
代码规范:代码按照规范写尤为重要,⼀定要养成代码"洁癖",驼峰命名、尽量多的采⽤英⽂单词命名,该空⾏的空⾏,该缩进的缩进,该回车的⼀定要回车。代码并不是你以为的写完就完事了,如果写的很烂,别说别⼈,n 段时间后,回头看看⾃⼰都不知道写的什么玩意。
投资⾃⼰:⼀定要舍得给⾃⼰花钱啊,腾讯不就⼀直在给你灌输这个概念吗,只要充钱就能变强,放
在咱⾃⼰⾝上,充钱能解决效率。⼀定要有选择性的、理性的投资⾃⼰、投资知识,你的认知,真的决定你今后的⾼度,花钱培训也算是⼀次投资。
学会搜索:不要⼀有问题就问别⼈,真的尝试解决过吗?我⼀直调侃百度不如⾕歌,但⼤部分问题往往百度就能解决,搜不到?⾃⼰真的会搜索吗?
学会独⽴:有⼈会认为实习,就应该有⼈带⾃⼰,在校那会我也是这样,以为进了公司有个⼤佬⼿把⼿教⾃⼰,⼀有了问题就问;事是这么个事,但是你⼀定要认识到这个“带”,不是“⼿把⼿”,终究还是要靠⾃⼰,解决不了的问题,⾃⼰尝试实在解决不了再去问,⼀⽅⾯⾃⼰印象深刻,另⼀⽅⾯,不浪费别⼈的时间,如果你私下不努⼒,并不会有⼈⼿把⼿喂你饭吃。
其他技能:我觉得拥有⼀点其他技能还是很有必要的,这会使你更有优势,⽐如我⾃⼰会And r oi d开发,能独⽴开发简单的
AP P,有上架应⽤商店经验,这带给我的优势就是筹码。
时刻学习:⼀定要保持时刻学习,不要觉得⾃⼰公司⽤不到就不⽤学了,你能保证你在这家公司⼀辈⼦?s p r i ng b oot、
s p r i ng c l oud、F l ut t e r、V ue、Ang ul a r.j s、E c ha r t s、R e d i s、L uc e ne、S hi r o 、E l
a s t i c s e a r c h、N g i x、
Z ook e e p e r、Dub b o、W e b S e r v i c e、P O I数据导⼊导出\等等等等
最后最后:这⼀年⾥特别感谢技术管理⼈员的器重,以及同事的帮忙,学到了不少东西。同时特别感谢⾃⼰的⼤学⽼师-昌⽼师,⼊门启蒙⽼师。
博客地址:ht t p s://c nb l og s.c om/ni c e yoo
2019年7⽉20修改补充:毕业⼀年了,第⼆篇⽂章来了《》
2020年7⽉06修改补充:毕业两年了,第三篇⽂章来了《》
18年专科毕业后⼀度迷茫,创建了⼀个⽤来记录⾃⼰成长的,感兴趣的⼩伙伴可以关注:n ic e y o o
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论