一、文章背景
看着手中的畢業證,才發現轉眼三年過去了,卻仿佛昨日還是新生報到那會。
作為18應屆畢業生已經工作實習一年了,2年學校+1年實習,相信這也是大部分同屆生的現狀。
那么,一個萌新在進入職場的這一年都經歷了什么呢?在校那會我是挺好奇的。
所以想把過去一年的工作現狀寫出來,算是一份總結,希望一年后,回過來看這篇文章,希望自己變得更加優秀。
其實一直想寫一篇一年的工作總結,也希望自己堅持每年都會寫一個總結,立個 Flag 明年補充。
這篇文章利用閑余時間斷斷續續的寫了兩三周的樣子,適合人群:在校或者即將進入職場實習的大專生。
二、閱讀步驟
我把這篇文章分為如下幾個部分:
三、技能
3.1、java 基礎語法
基礎語法,這往往是我們找實習工作的一份憑證,如下整理一部分經常會用到的。
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、Web 基礎
1、了解 Servlet、Interceptor、Listener、Filter
2、Http 請求,常用的 Get、Post 請求區別, 以及請求頭、狀態碼概念。
3、Cookie 、Session
5、javaScript 基礎語法,以及 jquery 簡化后的語法
6、Ajax 請求,跨域順便了解一下
其實上邊這兩個部分,一點都不想寫進來,因為這本該是在校掌握的東西。
3.3、版本控制
1、git、svn
2、代碼沖突解決方案
3、分制管理
團隊版本控制這塊還是很重要的,從身邊同學也有了解到,大部分公司選擇 SVN 管理工具,所以很有必要補充 SVN 使用的知識,平時可以鍛煉自己,使用 SVN 或者 Git 來提交代碼, 我平時的話,兩個都有在用,通常自己的項目都是放在《碼雲》上邊。
既然提到版本控制,代碼沖突解決真的尤為重要,如果你不是獨立負責開發一個模塊,那么很難避免的就是“代碼沖突”,所以開發中,提交代碼之前一定要去對比“資源庫最新代碼”,確保沒有沖突再去更新,或者提交代碼。
補充一個工具,Beyond Compare ,代碼對比工具,相信我你會用到的。
3.4、spring 核心
之所以單獨拿出來,因為他足夠強大,企業輕量級開發框架。
-
1、Spring-IOC:控制反轉,分開解釋。
-- 控制:強調對象是由容器控制的,控制了對外部資源的獲取。
-- 反轉:以前都是我們自己創建對象依賴對象,反轉就是由容器幫我們創建並注入依賴對象。 -
2、Spring-AOP:面向切面編程,這個所謂的切片:aop 將封裝的對象切開,然后找出其中對多個模塊產生公共影響的部分,封裝成一個可以復用的模塊,這個模塊稱為切面,切面把那些與業務邏輯無關,卻被業務模塊共同調用的邏輯進行抽取封裝,減少系統代碼的重復度。
AOP 的解釋有點官方,個人理解,使用 aop 技術,你可以對目標對象的方法進行增強處理,比如 a()方法,就是打印一個 syso("你好呀"),但是呢,如果采用 aop切面技術給與加強,你可以在這個a()方法之前之后都可以進行監聽,比如打印 syso("你好呀") 之前打印一個"niceyoo",a方法之后打印一個 “2018”
如果你一點都不清楚 Spring 核心,建議搜索了解一下。
3.5、Spring 其他技術
-
Spring事務:事務的出現是為了確保數據的完整性和一致性,一句話概括:一次提交,要么全部成功,要么失敗什么都不做。
參考地址:https://www.cnblogs.com/niceyoo/p/8729525.html -
SpringMvc:簡單明了的 MVC 框架。
-
SpringTask:代碼級定時任務,注解方式,可以將它比作一個輕量級的Quartz,使用起來非常方便,只需完成 Scheduled 表達式。
-
SpringSecurity:用戶權限管理,根據角色和用戶,實現 UserDetailsService,進行自定義權限管理。既然說到權限管理,不得不提的就是
Shiro,實際開發中,Shiro 使用相對更容易一點,至於兩者的區別,建議搜索了解一下。 -
SpringBoot:可以理解成 Spring 升級版,簡化了 maven 配置,自動配置 Spring,無須手動配置 Spring ,無須各種煩人的 xml 配置。
其實說到 SpringBoot 真的要畫個重點了,特別流行,現在特別火的 SpringCloud 就是基於 SpringBoot 的,后面我也會多的寫一些關於 SpringBoot 文章。
3.6、開源框架(Hibernate 、Mybatis)
這兩個框架網上一堆的介紹,相信你也不陌生,所以不說什么大道理,根據我實際開發使用情況,做簡要概述。
- 共性:兩者都是用來操作 Dao 層的,通俗一點就是用來操作數據庫的。
- 區別:Hibernate 不用手寫 sql 語句,內部封裝了大量常用方法,同樣提供 HQL、QBC 支持 sql 編寫, 而 Mybatis 全部需要手動書寫 sql 語句;Hibernater 支持自動建表,只需要在實體 Bean 上加入注解,即可實現數據庫表的創建,而 Mybatis 需要你自己在 mapper 中一一對應;Hibernate 配合 Spring Data JPA 或者 Spring template 也可實現 sql 語句的編寫。
- 總結:Mybatis 使用起來相對比較靈活一點,而 Hibernate 使用比較方便。
3.7、服務器
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.8、數據庫
開發中最常用的數據庫:Oracle、MySQL、Redis(非關系型數據庫)
Oracle\MySQL 平時自己使用的話, MySQL 使用會比較多,畢竟輕量級,至於兩者的區別,實際開發真沒多少差距,至少一年實習經驗的我是這么看的。畢竟現在還停留在“增刪改查”階段。
Redis 非關系型數據庫,這又是個重點,應用場景特別多,經常被作為緩存來使用,如面對數據高並發的讀寫、海量數據的讀寫等等。
3.9、第三方接口
一年的工作中或多或少的總會接觸到一些第三方的接口:
-
支付接口:很多公司都會有商城項目,支付寶以及微信支付流程了解一下,詳細資料可以參考官方文檔,現在官方已經說得很簡單了,像是統一下單,對接已經很方便。
-
七牛雲存儲:這個是自己私下做的項目,涉及到七牛雲的文件存儲、大文件上傳等,公司一般存儲都會用自己服務器,所以大文件上傳,推薦 webuploader 分片上傳了解一下。
-
微信公眾號開發:這一年在公司獨立做了兩個微信公眾號的小項目,剛接手的時候,也會有懵逼狀態,多看官方文檔就好了。
-
短信接口:這種算很簡單的第三方接口,引入依賴,直接調用即可。但需要在第三方后台設置模板等,注意在前后台限定用戶請求次數。
-
其他接口:郵件發送等。
3.10、電腦部分工具
開發工具: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
四、認知
在帥張的影響下我更新了一個觀念,人與人之間最大的差距,其實本質上是認知的差距。
傅盛說過這么一句話:所謂成長,並不來自於所謂的位高權重,不來自於所謂的財富積累,也不來自於你掌握的某一個單項技能。所謂成長,就是認知升級。
舉一個例子—富人跟窮人的邏輯思維:
窮人花 10 塊,總奢望得到 100 塊的價值,不然的話就覺得虧了,而富人花 1w 塊,如果能得到 1000 塊的價值,他們就覺得這錢沒白花,但是即便如此,富人可以輕易獲取 1000 塊的資源,而窮人即便費勁九牛二虎之力得到 100 塊的資源也差距很大。
再比如我花了 1k 買一些付費知識,就必須追求 1k 的價值么?這就大錯特錯了,我花了 1k,我能得到 1塊 的價值,我就覺得是值得,這就跟很多富人,花幾十萬讓小孩報一個班一樣,他們奢望小孩一定要在那個班上學到幾十萬的價值么?不一定,他們要的是小孩能比別人學得多一點,那就是值得了,這就是富人思維。
可是認知,跟這個窮人富人邏輯思維有個毛關系呢?
五、總結
結合上文+現階段的工作經驗做一個總結。
基礎知識:參加工作后,發現基礎知識如果很薄弱的話,真的要下功夫了,在實際開發中,用到最多的其實還是那些基礎知識,如果你覺得自己在學校並沒有掌握牢固的話,黑馬的基礎視頻很有必要再看一遍,反正我是又看了一遍,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后台)》
2020年7月06修改補充:畢業兩年了,第三篇文章來了《畢業兩年的大專生程序員工作總結(java后台)》
18年專科畢業后一度迷茫, 創建了一個用來記錄自己成長的公眾號,感興趣的小伙伴可以關注微信公眾號:niceyoo
