從走出校門到Java實習生生活


男,95年,這個學期就大四了,非計算機專業(數字媒體)。目前在二線城市做Java實習生,待遇一般,應該算一個正常的實習生水平吧:租的一個約10平米的小單間,實習工資-衣食住行-雜七雜八的小消費差不多結余100塊左右,一般般,勉勉強強能養活自己。

技術的基礎大概是這樣,從去年4月開始學JavaWeb技術,從jsp開始一直學到Spring MVC、Mybatis這樣的技術棧,中間做了幾個小項目(CMS、管理系統等)。從去年10月開始轉做Android了,水平也就是四大組件+藍牙/NDK+一些庫的技術以及稍微了解了一些什么事件機制、OOM優化。嗯,這樣隨手列出來感覺自己水平一般般,就是能做一些J2EE和Android項目的水平。

寫簡歷

因為從 去年10月~出校門的7月 這一段時間一直在做Android開發,我自己也一度認為我出來后也只是做Android開發的,所以投了很多Android的簡歷,簡歷上除了寫Android的技術,還寫了一大堆的Web開發中的Spring、Mybatis上去,項目經驗也是臃腫的不行,2個Web,2個Android的,看上去內容挺多的,但是兩個方面的開發都不突出,於是我就想了一個策略,分簡歷,做一份Java簡歷,做一份Android簡歷。兩者各突出其重心,投簡歷的時候分別投不同的崗位。大概效果可以看下面區別

Java簡歷

熟練Java開發,良好的代碼風格以及IOC/DI、AOP、OOP、高內聚、低耦合等編程思想與設計模式

掌握Tomcat/Apache/Nginx等服務器的基本配置與使用。

掌握Spring/MyBatis/Hibernate/Spring MVC等主流后端開發框架,具備相關經驗

熟悉MySQL、SqlServer、SQLite等關系型數據庫的使用,熟練編寫SQL語句,了解Redis緩存技術

掌握微信公眾號開發技術,XML與JSON的解析技術,OAuth2.0技術等

掌握Android App開發技術

掌握HTML5/CSS3/JavaScript/jQuery等前端技術,能夠編寫PC/移動/響應式頁面

掌握Linux的使用與常用shell腳本的編寫,掌握Gradle、Maven、Git等工具使用

Android簡歷

熟練Java開發,良好的代碼風格以及IOC/DI、AOP、OOP、高內聚、低耦合等編程思想與設計模式

熟練Android的四大組件、常用與第三方UI控件與布局的使用、了解View機制與自定義控件

了解Android IPC機制、圖片緩存、NDK技術、OpenGL es、藍牙開發技術

熟悉Android SDK的開發,了解xUtils、GreenDao、OkHttp等第三方框架的使用

掌握Spring等Java后台開發框架的使用,與Tomcat服務器的配置

熟悉MySQL、SQLite等關系型數據庫的使用,熟練編寫SQL語句

掌握微信公眾號開發技術,XML與JSON的解析技術,Webservice、OAuth2.0技術等

掌握HTML5/CSS3/JavaScript/jQuery等前端技術,能夠編寫PC/移動/響應式頁面

掌握Linux的使用與常用shell腳本的編寫,掌握Gradle、Maven、Git等工具使用

投簡歷

因為在某三四線城市,當地互聯網產業不是很發達,准備去網上投遞一些二線城市的公司的簡歷,我試過的工具有51、智聯、拉勾、BOSS直聘。前兩個不是純IT招聘的,上面投的全部沒消息了;拉勾上投的比較多,但是最后可以說99%的簡歷直接被拒絕了,BOSS直聘上面的比較多,性質不同,這里比較推薦的是后面兩個。

入職后,發現拉勾上的簡歷實在是太多了,對於“Java實習生”這個崗位來說,每天HR都能轉3~8份簡歷到技術經理這邊,平常工作時間都在敲代碼,沒時間看,一般都是下班前或者吃飯的時候看幾個,不通過的也不和一個個的去跟HR反饋,就丟到郵箱里,所以反饋的速度比較慢的,但一般來說投了簡歷之后過了一周還沒動靜的就代表沒什么希望了。

BOSS直聘這邊聊天的人大多是HR,所以聊技術問題是沒有用的,所以大多數都是隨便聊一下,然后要簡歷,給技術VP看看,如果可以的話就安排你的面試時間。

做個比較來說:拉勾的一整套機制很符合公司的招聘流程,在互聯網行業也是比較知名的,競爭比較大,安排面試的幾率比較低。BOSS直聘這邊因為招聘是通過聊天進行的,簡歷表現的東西有限,通過聊天的方式能快速了解一些個人經歷方面的東西,還不錯。另外一些大一些的公司自己公司網站上也有招聘入口也可以關注一下。

面試

坐了通宵的火車從學校來到這個城市后,剛到的第一天下午就有一個Android面試,舟車勞頓的我一晚上不僅沒睡,而且不敢睡,臨時安置在學長家,然后急急忙忙的搜面試資料,畢竟是第一次面試,搜資料的過程中都睡着了1次,然后中午隨便找了一家店吃了點東西就去面試了。HR先拿了一張個人信息表給我填,然后找了個技術人員給我面試,記錄大概如下:

1、你的項目里用到了SlidingMenu,這個Acitivity是普通的Activity嗎?

不是,用的是它封裝好了的Activity

2、簡單的說一下你知道的設計模式

單例、builder、責任鏈、觀察者、工廠……反正一大堆,看了一本設計模式的書,幾十種想不起來了

3、那你說一下Builder模式的最廣泛的應用

當然是生成對話框啦

4、Builder模式的鏈式有什么優點

代碼更加優雅

5、除了優雅呢,還有什么優點?

呃。。。(沒答上來,應該是根據實際的需求可以builder執行不同的方法,更加靈活。比如說生成的對話框有幾個按鈕,這些都很好控制的。雖然能理解這個,但是沒有答上來)

6、同一個Acitivity中Fragment之間如何進行通信,Fragment什么時候執行getAcitivity會空指針

fragment我在項目里面都是操作同一個service,沒有通信過,要我想的話應該可以先從碎片傳到activity中,再傳到碎片中去;第二種方法應該是可以用AIDL實現的(面試官:一般不這么弄)。

7、簡單說一下你知道的有幾種BlockQueue以及他們的特點

不知道(我只用過BlockQueue這個類,其他的子類沒用過)

8、說一下線程池把

不知道(回去立馬學了一遍)

9、說一下Android中的IOC把

是在說注解式把,我一般不用的,用注解開發降低Android運行效率,服務器端開發一般就不需要考慮這個問題

10、為什么用注解會降低效率

因為涉及到類的加載器與反射……效率比較低

11、有沒有注解是不降低效率的?

ButterKnife的注解是在編譯的時候生成Java文件,僅在編譯時需執行,執行后就和普通代碼一樣了

12、OOM的解決方案?

用更小的圖片、壓縮圖片、使用LruCache、回收。(這個答的特別爛)

水平有限,只能回答成這個樣子,他問的問題也是按照我簡歷寫的以及他們公司的項目問的,可能有些也答錯了,不過半個小時的聊天和答問還是挺愉快的,技術面試應該算是通過了吧。然后HR來談待遇,我報了個我現在(寫這個文章的時候)實習的工資,她覺得有點高,說他們這邊招實習生一般是給3500左右的,不過剛剛面試的人說我技術很成熟,然后要我回去聽消息,他們還要對去他們公司的其他實習生面試,對比一下再決定。這是在BOSS直聘上投的,整體感覺還好,但是最后並沒有要我:)。

面試這家后出門沒幾分鍾就收到另外一家的面試電話,通知我明天上午11點到公司面試,嗯,對,這次又是Java崗位,面試完后,又回學長家開始搜Java面試題(雖然第二天一個都沒問到),通宵的站票加上到處跑,實在是太困了,6點鍾就睡了。第二天算好時間出發去面試,有點遠,要1個多小時,結果我坐公交車坐反了!!坐反了!!坐反了!!我就說怎么就到終點站了?!!眼看着就趕不上面試了,我掏出了現代文明利器——滴滴打車,然后40分鍾跨了2個區就到了。

第二次面試底氣足了一點,先去做了一套Java選擇題,30道,主要考的是Java 基礎部分(多線程、IO、static、計算、集合、泛型)的,以及Hibernate、Spring等框架,大概弄清楚了公司用的技術,然后就開始面試了,先告訴我這筆試題錯了5個,還不錯。(入職之后發現很多別的來面試的錯一大半,20的大有人在,我應該是得益於考了一個Oracle的Java證吧,雖然沒什么用,但是的的確確是把Java基礎給弄的挺牢固的)后面正式開始面試,結果因為我已經大半年沒做JavaWeb開發了,一直在做Android開發,面試官要我舉幾個開發中碰到的難點問題,我居然一個Web開發的難點都沒想起來!!光想着Android開發中碰到的NDK驅動編程與修改安卓系統觸摸屏的c代碼了……,硬着頭皮的和面試官說了一下Android開發中的難點以及一次碰到的金融信用評分系統的軟件結構設計問題,然后機智的加了一句

不管是Android開發還是Java開發,雖然他們是不同方向的開發,但是我覺得本質上都是編程的邏輯和業務思維在不同程序中的不同體現而已。

雖然公司用的Hibernate和Struts我都沒學過,但是我會Spring MVC和Mybatis,有了這種編程思維從其他框架轉用hibernate這些也是很快的。編程最重要的其實也不是這些框架,而是編程的邏輯和思想。

(說的好亂,亂到我自己都不知道我想表達的東西表達出來了沒有)

雖然比第一次面試有底氣,但是這次10分鍾左右就結束了,感覺表現的沒上一次的好,然后HR來和我談待遇,說了一下我的學習經歷和項目經歷,然后我就把我的“創業”經歷拿出來“吹”,然后說了一下自己申請到的創業基金和項目資金什么的,然后按着招聘啟事上的報價說了一個價,也是感覺HR覺得我報的略高,但還是說要我回去等,一周內出結果。送我走的時候我,她突然問我要不要先參觀一下公司?WHAT??這代表是要了我嘛?雖然內心很激動,但是強行裝作很淡定的樣子。然后我把公司三層樓參觀了個遍,然后我就回來了。

那天很高興,但是擔心是不是因為報價太高了。然后問了一下群里學長,二線城市的實習工資大概什么水平?群里的學長一報價,我就覺得果然是我報價報高了……可是真的很想進今天面試公司,晚上很忐忑,想着第二天和HR詢問情況提一下降個500的報價什么的,真的很希望能進那個公司。然后第二天我還再糾結投下家的簡歷是哪一家的時候HR就直接打電話給我說我通過了……

入職

公司用的開發環境是Ubuntu,嗯,作為一個學習Adobe全家桶的多媒體設計類的專業來說,表示根本用不習慣啊,第一天勉勉強強學了一下什么apt-get之類的命令,把STS\Tomcat\MySQL之類的軟件都安裝好了,第二天丟了個SSH項目給我,然后花了三天的時間把struts、Hibernate學好了,因為有基礎學起來還挺快,(偷偷看imooc的視頻學的,用了x2的速度)並把項目看的差不多了,這是一個小項目,大概也就8張表的大小。

第一周就這么過了,然后第二周跟我說了有好多個優化的地方要我優化一下,然后我就一個個模塊的改,還有好幾個SQL的優化,這個項目雖然不大,但數據量是百萬級別的,然后我就打開show_sql慢慢讀,發現還真有很多可以優化的地方,然后就把leader提出的問題全部弄好了。嗯,半個月的時間就這樣過了,很快,也就兩個星期。

第三周就安排了我和PM聯系開發一個新的模塊,然后給我預估2周的時間開發完,然后我就開始設計程序的流程,和PM確定好了之后,差不多3天就開發完了,就跑去和PM交付,結果測試了一下,使用這個系統的人覺得有些功能設計的不好,要變,然后就又變了需求,就開始新的需求的開發。

第四周這個功能就發布投入使用了。這個一周又接了一個微信掃碼對接的接口功能,然后我又開發了2天弄好了。這個系統基本上就比之前要優化不少了。leader看安排給我的項目都做的ok,就拿公司對外的一個項目給我看,拿到SVN后,一看項目我傻眼了,我用搜索統計了一下java文件900+,數據庫的表格200+張。先隨便看了一下,發現看不懂,然后去看web.xml,根本就沒有熟悉的spring的dispacherservlet,用了一個什么見都沒見過,搜也搜不到的框架(后來閱讀代碼發現這個框架居然是公司自己基於Spring寫的),然后硬着頭皮看xml文件一點一點的看業務邏輯,最后終於看通了。

然后開始讓我寫一個給Ajax的接口,熟練后差不多1天就寫好了,然后第二天和前端一起調試,又接了一個Ajax接口,然后第三天寫接口,也寫的很快,然后繼續和前端調試,嗯感覺很順利的時候就是出問題的時候,上線后的系統不正常了,因為前端寫了一個input,但是沒有賦值!因為這個值是后端賦的,然后我不知道應該是我來做的,上線后的系統表單不能提交,因為那個值沒有獲取到。產品、前端、leader都急的不行,然后我急急忙忙的fix后,新的接口和以前的一個接口在使用的時候又有Bug了,導致頁面上什么數據都不顯示……然后一行人又的去找問題,發現是另外一個系統的前端的問題。反正就是這類大型網站涉及到多個系統的對接,我剛入職還不了解這些接口分別對應的是什么系統,所以出了Bug,急急忙忙的一周的最后一天就這樣結束了……

批評

新人入職不免被批評,雖然不願意聽,但還是要接受,leader批評的再多,也是為我好,為項目好,整理如下:

1. 在linux環境下,你必須要會用vim,不要用那個什么geditor

2. 代碼縮進要對齊、對齊,等號前后的空格也很重要,你這樣誰看到都煩

3. 注釋要簡單明了,你這注釋自己讀一遍試試?

4. commit代碼前要檢查,每一個修改的地方再看一下,show_sql這種代碼還要提交到線上的服務器的嗎?!

5. 獲取到的值要先自己判斷空指針,再使用

6. 開發使用debug模式,不要用什么start server

感受

1. 公司里的項目比在學校做的要復雜的多的多的多,學校里最多做5~8張表的項目,這里這個200個表的涉及到的業務比較寬,但是細細讀下來還是能理解的,大項目和小項目都是由一個個板塊堆積起來的,更多的是要一顆能靜下來的心

2. IT行業加班是常態,但在我在的公司感覺氛圍不是很明顯,6點就可以走,但是我一般是10點回去的,畢竟沒有必要回去那么早。前幾周是為了加班補充知識缺陷,后幾周穩定下來了就用晚上的時間做做畢業設計了,做完后就好好按15k的標准補充自己知識點

3. 出來之前以為JavaWeb就是ssh或ssm的框架寫一些業務邏輯,現在看自己的知識短板真的很多。而且了解到知乎上有很多應屆生把 Spring 源碼什么的都弄的特別熟,而我只了解Spring的特性和API的調用,任重而道遠

4. 在學校我這個非計算機專業其實我技術還算是挺好的,但在公司,不僅每個人的技術都比我好,而且其他的實習生還是純種的軟件工程或計算機專業的,Linux用的比我熟,而且專精JavaWeb開發,不像我野生生長還去學移動端和前端開發,雖然並沒有壞處,但是應屆生專精一塊能找到更好的工作

5. 在公司低調做事,認真完成手頭工作,能力范圍內幫助他人

6. 人與人的差別,在八小時之外

7. 兩年內不理財,用於個人提升

8. 入行后鍛煉身體很重要

9. 保持長期的學習心態

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM