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

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

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

寫簡歷

由於從 去年10月~出校門的7月 這一段時間一直在作Android開發,我本身也一度認爲我出來後也只是作Android開發的,因此投了不少Android的簡歷,簡歷上除了寫Android的技術,還寫了一大堆的Web開發中的Spring、Mybatis上去,項目經驗也是臃腫的不行,2個Web,2個Android的,看上去內容挺多的,可是兩個方面的開發都不突出,因而我就想了一個策略,分簡歷,作一份Java簡歷,作一份Android簡歷。二者各突出其重心,投簡歷的時候分別投不一樣的崗位。大概效果能夠看下面區別linux

Java簡歷

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

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

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

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

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

掌握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等工具使用

投簡歷

由於在某三四線城市,當地互聯網產業不是很發達,準備去網上投遞一些二線城市的公司的簡歷,我試過的工具備5一、智聯、拉勾、BOSS直聘。前兩個不是純IT招聘的,上面投的所有沒消息了;拉勾上投的比較多,可是最後能夠說99%的簡歷直接被拒絕了,BOSS直聘上面的比較多,性質不一樣,這裏比較推薦的是後面兩個。

入職後,發現拉勾上的簡歷實在是太多了,對於「Java實習生」這個崗位來講,天天HR都能轉3~8份簡歷到技術經理這邊,日常工做時間都在敲代碼,沒時間看,通常都是下班前或者吃飯的時候看幾個,不經過的也不和一個個的去跟HR反饋,就丟到郵箱裏,因此反饋的速度比較慢的,但通常來講投了簡歷以後過了一週還沒動靜的就表明沒什麼但願了。

BOSS直聘這邊聊天的人大可能是HR,因此聊技術問題是沒有用的,因此大多數都是隨便聊一下,而後要簡歷,給技術VP看看,若是能夠的話就安排你的面試時間。

作個比較來講:拉勾的一整套機制很符合公司的招聘流程,在互聯網行業也是比較知名的,競爭比較大,安排面試的概率比較低。BOSS直聘這邊由於招聘是經過聊天進行的,簡歷表現的東西有限,經過聊天的方式能快速瞭解一些我的經歷方面的東西,還不錯。另一些大一些的公司本身公司網站上也有招聘入口也能夠關注一下。

面試

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

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

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

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

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

三、那你說一下Builder模式的最普遍的應用

固然是生成對話框啦

四、Builder模式的鏈式有什麼優勢

代碼更加優雅

五、除了優雅呢,還有什麼優勢?

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

六、同一個Acitivity中Fragment之間如何進行通訊,Fragment何時執行getAcitivity會空指針

fragment我在項目裏面都是操做同一個service,沒有通訊過,要我想的話應該能夠先從碎片傳到activity中,再傳到碎片中去;第二種方法應該是能夠用AIDL實現的(面試官:通常不這麼弄)。

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

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

八、說一下線程池把

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

九、說一下Android中的IOC把

是在說註解式把,我通常不用的,用註解開發下降Android運行效率,服務器端開發通常就不須要考慮這個問題

十、爲何用註解會下降效率

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

十一、有沒有註解是不下降效率的?

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

十二、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. 保持長期的學習心態

相關文章
相關標籤/搜索