一年工做經驗的大專生程序員(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

相關文章
相關標籤/搜索