很久沒有寫文章了,一時間竟不知如何開篇?為什么沒有寫呢?是因為太忙了。最近在忙什么呢?工作學習還有就是招人。上班時間不忙的時候大多是在看技術文章、技術文檔,上下班公交車上也是,還有就是最近兩個月在面試一些人。其實我是不太想面的,原因有三。一是耽誤我自己的時間,二是面了十幾個只有一兩個能讓我很稱心的。還有就是太費錢了公司又不給報銷,所以我最近都會用一些會議軟件來面試。
昨天面試了一個2012年開始工作的30歲程序員,面試前我心里打鼓,畢竟我才工作三年😢但是說實話面下來不太理想,首先簡歷寫的一般,簡歷排版格式有點亂,多處字體不一致,還有技術棧很老,項目很小大多是內部用的,沒用過Redis,分布式相關的東西沒有,也沒自己去了解過項目之外的東西,其次面試問到的問題回答的不到一半,但是態度還是不錯的,臨了還問我面試情況,我說了我的感受,也給了一些建議。
其實稍微看看他的簡歷,待過的公司,做過的項目也,就能知道為什么工作七八年的30歲程序員水平這么一般了。工作這么多年一共待過兩個公司,看樣子都是外包公司,寫的幾個項目也大多數是內部使用的一些管理系統,並發量不大,沒有技術挑戰,對自己提升不高。
那么程序員如何突破自己呢?怎么才能擺脫中年危機呢?首先要跳出舒適圈,人都是有惰性的,都喜歡安逸的活着,如果生活過得去,沒有太大的壓力,誰又願意再努力一把呢?但是成功往往屬於那些肯逼迫自己的人,肯走出舒適圈、有目標的人。即使是30多了也是可以拼一把的,如果你是該技術的,那也可以再把技術深造深造,搞的扎實一點;如果你已經考慮轉管理了,那你就往管理方面靠,多看看管理方面的書籍,有空再考個管理的證,但是技術你也不能落下,不要求你把技術搞的多精通,但最起碼你要知道這個技術,了解一下他的基本原理,要不然有一天你要你下屬引進一個技術,他告訴你太難要花好多時間,或者說搞不了,你都不知道他說的是真的還是假的,如果你相信了,那他以后背地里就笑話你不懂技術,那以后這樣的事情還會多着呢。
另外不建議搞技術的過早的去轉管理,比如你剛工作3年,你的經理建議你去轉管理,這是不建議的,原因上面也說了,你的技術還不透徹,對技術的把控你完全不懂,到時候讓你評估一個技術引入的工作量,難度等,你搞不定的話又可能還會鬧出笑話。
今天遇到一個應聘者,工作經歷三年,四個項目全都是管理類的、內部使用的項目,但是人家簡歷寫的技術都是熟悉啊,符合公司的招聘標准啊。OK,面吧,來唄。
專業技能這塊寫的都是熟悉,我一看會這么多還挺棒的GOOD BOY
廢話不多說,上來我就問,Java基礎你掌握的熟練嗎?對方說還行吧,我就先問了幾個Java語法的概念,然后問了HashMap的put操作的流程、擴容機制,什么時候擴容的?做什么操作的時候會發生線程不安全?統統回答的不好。
我:如果想使用線程安全的Map,用哪個?
應聘者:ConcurrentHashMap
我:ConcurrentHashMap怎么保證線程安全的?
應聘者:這個...我平時用的少,不太知道底層
然后接着我就問什么是Spring?對方的回答是Spring是一個框架,核心是AOP和IOC。這就回答完了。
我:spring有什么優點呢?
應聘者:有 什么優點?...嗯...這些概念性的東西我忘了...
我:那你說一下什么是Spring AOP,可以干什么用?使用什么技術實現的?
應聘者:AOP就是面向切面編程,可以用來記錄日志,安全管理,用動態代理實現的
我:Spring AOP使用的哪種動態代理?
應聘者:JDK動態代理,CGLIB動態代理
我:什么時候用JDK動態代理,什么還是用CGLIB動態代理
應聘者:它有一個判斷,好像是沒有繼承類時用JDK動態代理
我:BeanFactory和ApplicationContext有什么區別?
應聘者:....我們項目spring用的很少,用的是springboot
然后我簡單的問了幾個springboot的基礎問題,還都能回答上來,可以看出來確實用了springboot。
看他簡歷上寫的熟悉spring cloud,我心想做這些管理系統還需要微服務嗎?就問他在哪個項目里用到了,他說沒用過,是自己自學過。
因為我們也沒有這套技術,我就沒再問。
我對MQ感興趣,就問他RabbitMQ的問題。
我:使用RabbitMQ有什么好處啊?
應聘者:我們發郵件使用了RabbitMQ,往MQ里發郵件。
我:為什么要用RabbitMQ啊?(我問有什么好處,他剛沒回答,我換個問法)
應聘者:你是說為什么不用別的MQ嗎?項目里用的就是RabbitMQ我就用了
我:發郵件不用MQ也能實現,為什么要引入MQ呢?有什么好處嗎?
應聘者:不用MQ也能實現嗎?我不知道,我們發郵件就是用RabbitMQ,我就用了。
😓
我:(跳過這個問題吧)那你能說一下RabbitMQ的消息是基於什么傳輸的?
應聘者:基於什么傳輸?你這問的好官方啊,我不知道問的啥,你能問的通俗點嗎?
我:(算了跳過)那你知道RabbitMQ它的消息怎么路由嗎?
應聘者:這個...我不太清楚,記不清了,上個項目用到了,好久沒有用了,但是我如果有項目要使用的話,基本上再看看就能很快上手了。
我:哦,我看你技術寫的都是熟悉。那你Redis用的多嗎?
應聘者:用的少,我買過視頻看過。
我:那你說一下Redis的數據類型都有哪些?各自的使用場景
應聘者:string,hash,list,set,zset
我:(這就完了?明明問的還有使用場景呢)怎么使用Redis實現分布式鎖呢?
應聘者:這...嗯...我不太清楚,項目中不怎么用redis,都是內部使用的很少用redis
我:redis有哪幾種架構模式啊?
應聘者:架構模式...呃...不知道,對redis了解的不多。你問我點業務。(老是問我不會的,你問點業務啊?)
(不多,你簡歷寫熟悉⊙﹏⊙b汗,還教我問你,你是面試官還是我是啊?你的項目有毛的業務😄)
我:那你說一下你在項目中怎么使用Spring security的
應聘者:....
我:那你講一下SSO的流程
應聘者:....
這幾個問題,我已經沒仔細在聽他回答的是什么了
最后又問了幾個問題,我已經不想問了,已經快四十分鍾了。
我:我今天就這么多問題,你有什么要問我的嗎?
應聘者:咱們公司是在北京嗎我看手機號是北京的(...等一些關於項目的幾個問題)
這個應聘者存在一個什么問題?眼高手低,高估自己,面試准備不充分。建議近期找工作的把Java基礎,JVM,集合,並發,數據庫,redis,框架,dubbo,zookeeper弄懂,准備充分,這樣才能百戰不殆,成為offer收割機。
還有的應聘者問題回答的賊6,問道到在項目中怎么使用的,哪些地方用到了,就卡殼了。很顯然這樣的就是簡單粗暴的背面試題,所以也要結合自己的項目去准備面試,把面試題嵌入到項目中,能說出在項目里哪些地方用到了,有什么優點等,盡量准備充分。
好了今天就分享到這里,有什么需要交流的歡迎留言哦~