淺談C# .Net技術面試 , 正在找工做的人必定要看看

一、引子javascript

  最近一直在負責.net(B/S方向)技術面試相關的工做,前先後後面試了很多人,可是經過率較低,大概只有20%左右;有頗多感慨。 css

  最近也一直比較困惑,緣由到底是什麼?html

  是咱們要求過高,應聘者自己的問題,仍是是面試的內容自己的問題?前端

  二、咱們的崗位要求java

  這是以前項目組整理的一個簡單的崗位(.Net中高級職位)要求,貼一下:web

    必須技能:面試

  • 有2~3年實際的項目經驗(特別說明:工做經驗不必定要進入實際的公司才能積累的)
  • 思路比較清晰,有較強的獨立解決問題的能力
  • 熟悉b/s開發的各項基本知識(如css、javascript、html、asp.net),不要求全會,但至少能看懂別人寫的東西,另外各項裏面必須有一項較爲突出;
  • 對.net框架比較熟悉,熟悉多層模型,編碼能力較強,編碼規範,打字速度不能太慢(特別說明:這應該屬於最最基本的技能,可是很讓人不解的是面試過程當中有很多的應聘者居然尖着個手指頭在那兒慢慢敲字!!!)
  •  數據庫知識比較紮實

   優先考慮:ajax

  •  對web報表比較熟悉者
  •  有過多種數據庫開發經驗,可以羅列出各類數據庫之間的一些細微差異
  •  有過一些c/s開發經驗者
  •  前端開發經驗比較豐富者(如實際負責過ExtJS、JQuery、Dojo、YUI、AjaxPro相關工做的)

  三、使用的面試問題數據庫

  面試過程當中針對上面的崗位要求主要會涉及到如下幾項內容設計模式

  1)給10分鐘左右的時間,作一個詳細的自我介紹

  2)C#、Asp.Net、前端、數據庫等基礎知識

  通常會問到如下一些問題

  • a) 下面三句代碼有沒有錯,以inboxing或者unboxing爲例,解釋一下內存是怎麼變化的
  • int i=10; 
    object obj = i; 
    int j = obj;
  • b) 編碼題目, 如限定時間編碼求菲波拉契數列第n項的值,求函數f(n)=1/1!+1/2!+1/3!+...+1/n!的值,求兩個二維矩陣相乘的值等等;
  • c) 談談對委託、事件的理解等等;
  • d) 爲何asp.net控件可以保持住狀態;asp.net button的客戶端事件是如何映射成服務器端事件的;詳細談一下asp.net的管道模型;
  • e) 下面css中「一段文字」最終在瀏覽器中顯示什麼顏色;若是用js原生腳本改變class爲「xyz」該如何寫,將「一段文字」替換成「其它文字」如何寫等;
  • .abc{color:red;}
    #abc{color:blue;}
    <div id="abc" class="abc">一段文字</div>
  • f)談談ajax原理的瞭解程度以及目前業界流行的ajax框架的熟悉程度;
  • g) 表結構:
  • 成績表(Grade),包含字段:GradeID(Int,自增), SNO(int, 學號), CNO(int, 課程號), Score(float,分數)

  查詢每門課程的平均(最高/最低)分及課程號;

  查詢每門課程第1名的學生的學號;

  查詢每門課程中超過平均分的全部學生的學號等等。

  3) 設計方面的能力

  • a) 給出一些具體的應用場景,如多數據庫支持、工資計算方式多樣的狀況,如何來設計;
  • b) 談談對設計的理解;
  • c) 偶爾還會讓畫畫設計類型,寫寫代碼實現常見設計模式(如單例模式等)

  4) 解決問題的能力/學習習慣/我的特長等等

  主要涉及到如下一些問題

  • 讓應聘者本身挑一個本身以往作過的他認爲具備表明性的項目,詳細聊一下,主要聊一下他/她在這個項目中的職責,這個項目曾經遇到過哪些問題,如何解決的,他/她在解決這些問題的過程當中起到了什麼做用等等。
  • 給應聘者一個他目前不會的問題,讓其解決一下;
  • 課外時間都在幹什麼,常上的技術網站是什麼,最近看的基本書(電子書固然也算)的名字還記得嗎;
  • 聊聊本身最擅長的方面;

  四、我指望獲得的答案

  固然上面這些問題不可能一次所有都問到,時間上也不容許,可是四部分的內容我會根據實際狀況都會問到一些;時間通常在1個小時左右。

  下面談談從項目組以及我我的角度出發但願獲得的答案,但願可以給你們帶來些許啓示:

  1) 首先是自我介紹部分

  這部分的內容我本人以前被面試的時候也非常鬱悶,認爲:「個人簡歷都有了,你本身不會看嗎,還讓我再多說一遍,真實吃飽了撐的!」;這種想法真的是很是錯誤的,緣由有如下幾點:

  •  簡歷是hr篩選的,技術面試官通常都比較忙,雖然hr可能會提早將簡歷發送給技術面試官,可是面試官通常都比較忙,面試以前未必會仔細看簡歷;因此經過自我介紹可讓面試官更好的瞭解你;
  •  自我介紹能夠看出你的語言組織能力、邏輯思惟能力;
  •  自我介紹能夠引導面試官往應聘者本身熟悉方向上去發問,爭取面試的主動權。

  因此我所指望從應聘者的自我介紹中獲得如下一些信息:

  •  有組織、有條理的進行自我介紹;
  •  自我介紹的內容包括簡單介紹教育背景、工做經歷、項目經歷、 自我評價(優缺點、特長【說明:重要,亮點,若是應聘者本身提到了的話我通常會接着這個話題繼續聊下去】),我的的短/中/長期職業規劃。

  2) 基礎方面

  這部分的內容不必定要求所有精通,可是至少應該知其然,最好也能知其因此然,好比css的優先級,這裏我舉兩個簡單的例子:

  a) 編碼題目,這個我通常都會讓應聘者寫一段代碼,編碼是開發人員最基本的功底;針對編碼問題,我指望看到如下的結果:

  • 編碼以前先寫思路,好比,第一步怎麼怎麼作,第二步怎麼怎麼作,體現出良好的思惟習慣及邏輯思惟能力,這樣即便最終沒有寫出來也沒有太大的關係;
  • 良好的編碼習慣(如命名規範、註釋,在應聘者開始寫以前我也會),這裏我多說幾句,經常聽到有人說良好的命名就是最好的註釋,強掉少些註釋啥的;我面試過程當中有一個原則,通篇代碼沒有一句註釋的我直接不聊了;

  b) 引用類型/值類型,裝箱/拆箱問題。這個問題也比較典型,可能有人會說,這些東西又不會在工做中用到,問這種問題有什麼意義! 我要說的是,不是沒用到,只是你沒注意到而已。其它很少說了,我指望應聘者能把下面這張圖畫出來。

    

  總之一句話就是,我但願應聘者可以對原理性的東西多瞭解一些。

  3) 設計方面

  設計知識其實也是做爲高級開發職位必須具有的知識。

  我指望應聘者可以對設計模式有比較深刻的認識,經過我給出的經典場景可以馬上聯想到應該使用的設計模式。

  4) 解決問題的能力/學習習慣/我的特長等等

  a) 解決問題的能力一直是我我的也好,仍是項目組也好,比較看重的,給一個不會的問題(寫一個Windows服務小工具來蒐集服務器的CPU、內存等信息),我指望獲得的答案包含如下信息:

  •   首先要制定一個計劃(包含可能須要用到的資源、可能遇到的困難及解決思路,這個問題須要分幾個步驟去作,制定大體的時間進度計劃等等);
  •   按照規劃好的步驟去作這些事情,遇到困難經過最快的方式/方法去解決,並及時修正計劃;
  •   解決完之後及時總結、彙報等等。

  b) 指望應聘者有良好的學習習慣,對新技術、新知識持續不斷的學習;

  c) 在知識面上既要有必定的廣度,同時也有本身的專長。

  五、總結與建議

  1) 總結

  經過這段時間的面試,發現面試者主要有如下幾點不能徹底讓我滿意:

  • 思路不夠清晰,主要表如今:自我介紹的時候沒有條理,比較亂;解決問題的能力有所欠缺;
  • 比較浮躁,基礎不紮實。 動不動就寫精通XXX,對基礎的問題(如裝箱、拆箱)稍微聊得深刻一點就清楚了;
  • 不誠實:常常在簡歷或者自我介紹中提到:作過項目經理、技術經理,可是問到項目經理、技術經理的職責啥的卻說不清楚;
  • 知識面比較窄,學習習慣不夠好;
  • 職業目標不夠清晰;

  2) 建議

  結合本身的一些真實感覺,這裏給出幾點簡單的建議吧:

    • 給本身制定一個短/中/長期的職業目標,併爲此不懈努力;
    • 夯實基礎,項目中用到的知識固然要學習,基礎原理性的東西更要掌握;
    • 多總結,把知識沉澱下來;
    • 誠實;
    • 培養良好的編碼習慣;
相關文章
相關標籤/搜索