偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

面試干貨——年底干貨大放送,你準(zhǔn)備好了嗎?

開發(fā) 后端 前端
年底了,騷年們有沒有很雞凍——年終獎有盼頭了。之前在介紹事件的這篇 C#基礎(chǔ)系列——再也不用擔(dān)心面試官問我“事件”了 也聊到了面試,引起了很多園友的共鳴。在不久的年后,熱門的跳槽季就要來了,如果你準(zhǔn)備換工作,本篇或多或少能幫到你;如果你不打算換,沒關(guān)系,看看也無妨,看看是否有那么幾道題能夠引起你的一點(diǎn)點(diǎn)感觸;又或者你是面試官,老實交代,是否問過其中的某些~~不管你是否準(zhǔn)備面試,用一句自嘲的話來說:工作經(jīng)驗可以沒有,但換工作的經(jīng)驗咱可不能缺~~

對于一些基礎(chǔ)的筆試和簡單的面試題,博主就不照本宣科了。本篇就結(jié)合博主遇到以及網(wǎng)上經(jīng)??吹降囊恍┟嬖囶}做一個總結(jié)。PS:由于博主用的主要編程語言是C#,所以本篇主要介紹關(guān)于.net面試中的常見問題。

[[160994]]

一、對于 Web 性能優(yōu)化,您有哪些了解和經(jīng)驗嗎?

出現(xiàn)指數(shù):五顆星

主要考點(diǎn):這道題是博主在博客園的新聞里面看到的,回想之前幾年的面試經(jīng)歷,發(fā)現(xiàn)此題出現(xiàn)概率還是比較高的。因為它的考面灰常廣,可以讓面試官很快了解你的技術(shù)涉及面以及這些技術(shù)面的深度。

參考答案:這個問題可以分前端和后端來說。

1、前端優(yōu)化

(1)減少 HTTP 請求的次數(shù)。我們知道每次發(fā)送http請求,建立連接和等待相應(yīng)會花去相當(dāng)一部分時間,所以在發(fā)送http請求的時候,盡量減少請求的次數(shù),一次請求能取出的數(shù)據(jù)就不要分多次發(fā)送。

(2)啟用瀏覽器緩存,當(dāng)確定請求的數(shù)據(jù)不會發(fā)生變化時,能夠直接讀瀏覽器緩存的就不要向服務(wù)端發(fā)送請求。比如我們ajax里面有一個參數(shù)能夠設(shè)置請求的時候是否啟用緩存,這種情況下就需要我們在發(fā)送請求的時候做好相應(yīng)的緩存處理。

(3)css文件放 在<head>里面,js文件盡量放在頁面的底部。因為請求js文件是很花費(fèi)時間,如果放在<head>里面,就會導(dǎo)致頁面的 DOM樹呈現(xiàn)需要等待js文件加載完成。這也就是為什么很多網(wǎng)站的源碼里面看到引用的文件放在最后的原因。

(4)使用壓縮的css和js文件。這個不用多說,網(wǎng)絡(luò)流量小。

(5)如果條件允許,盡量使用CDN的方式引用文件,這樣就能減少網(wǎng)絡(luò)流量。比如我們常用的網(wǎng)站http://www.bootcdn.cn/

(6)在寫js和css的語法時,盡量避免重復(fù)的css,盡量減少js里面循環(huán)的次數(shù),諸如此類。

2、后端優(yōu)化:

(1)程序的優(yōu)化:這是一個很大的話題,我這里就選幾個常見的。比如減少代碼的層級結(jié)構(gòu)、避免循環(huán)嵌套、避免循環(huán)CURD數(shù)據(jù)庫、優(yōu)化算法等等。

(2)數(shù)據(jù)庫的優(yōu)化:(由于數(shù)據(jù)庫優(yōu)化不是本題重點(diǎn),所以可選幾個主要的來說)比如啟用數(shù)據(jù)庫緩存、常用的字段建索引、盡量避免大事務(wù)操作、避免select * 的寫法、盡量不用in和not in 這種耗性能的用法等等。

(3)服務(wù)器優(yōu)化:(這個可作為可選項)負(fù)載均衡、Web服務(wù)器和數(shù)據(jù)庫分離、UI和Service分離等等。

二、MVC路由理解?(屢見不鮮)

出現(xiàn)指數(shù):五顆星

主要考點(diǎn):此題主要考點(diǎn)是MVC路由的理解。

參考答案:

1、首先我們要理解MVC中路由的作用:url Routing的作用是將瀏覽器的URL請求映射到特定的MVC控制器動作。

2、當(dāng)我們訪問http://localhost:8080/Home/Index 這個地址的時候,請求首先被UrlRoutingModule截獲,截獲請求后,從Routes中得到與當(dāng)前請求URL相符合的RouteData對象, 將RouteData對象和當(dāng)前URL封裝成一個RequestContext對象,然后從Requestcontext封裝的RouteData中得到 Controller名字,根據(jù)Controller的名字,通過反射創(chuàng)建控制器對象,這個時候控制器才真正被激活,最后去執(zhí)行控制器里面對應(yīng)的 action。

三、談?wù)勀阌X得做的不錯系統(tǒng),大概介紹下用到了哪些技術(shù)?

出現(xiàn)指數(shù):五顆星

主要考點(diǎn):這是一道非常開放的面試題。博主遇到過好幾家公司的面試官都問道了這個,博主覺得他們是想通過這個問題快速了解面試者的技術(shù)水平。此題只要結(jié)合你最近項目用到的技術(shù)談?wù)劸秃昧恕?/p>

參考答案:

就拿我之前做過的一個項目為例來簡單說明一下吧。項目分為客戶端和服務(wù)端,客戶端分 為BS客戶端和CS客戶端,BS客戶端采用MVC 5.0的框架,CS客戶端是Winform項目,服務(wù)端使用WebApi統(tǒng)一提供服務(wù)接口,考慮以后可能還要擴(kuò)展手機(jī)端,所以服務(wù)接口的參數(shù)和返回值使用 通用的Json格式來傳遞數(shù)據(jù)。

1、服務(wù)端采用的面向接口編程,我們在軟件架構(gòu)的過程中,層和層之間通過接口依賴, 下層不是直接給上層提供實現(xiàn),而是提供接口,具體的實現(xiàn)以依賴注入的方式在運(yùn)行的時候動態(tài)注入進(jìn)去。MEF就是實現(xiàn)依賴注入的一種組件。它的使用使得UI 層不直接依賴于BLL層,而是依賴于中間的一個IBLL層,在程序運(yùn)行的時候,通過MEF動態(tài)將BLL里面的實現(xiàn)注入到UI層里面去,這樣做的好處是減少 了層與層之間的耦合。服務(wù)端的異常里面、權(quán)限驗證、日志記錄等通用功能使用了AOP攔截的機(jī)制統(tǒng)一管理,項目中使用的是Postsharp這個組件,很好 地將通用需求功能從不相關(guān)的類當(dāng)中分離出來,提高了代碼的可維護(hù)性。

2、BS的客戶端采用的jquery+bootstrap 的方式,所有頁面采用流式布局,能更好適應(yīng)各種不同的終端設(shè)備(PC、手機(jī))。項目中使用了各種功能強(qiáng)大的bootstrap組件,能適應(yīng)各種復(fù)雜的業(yè)務(wù)需求。

四、Js繼承實現(xiàn)。

出現(xiàn)指數(shù):五顆星

主要考點(diǎn):這道題考驗面試者對js理解的深度。根據(jù)博主的經(jīng)歷,這種題一般在筆試出現(xiàn)的幾率較大,為什么把它放在這里,因為它確實太常見了。其實js實現(xiàn)繼承的方式很多,我們只要寫好其中一種就好了。

參考答案:原型鏈繼承

 

  1. function Person(name, age){ 
  2.     this.name = name; 
  3.     this.age = age; 
  4. }    
  5. //通過原型鏈給Person添加一個方法 
  6. Person.prototype.getInfo = function(){ 
  7.     console.log(this.name + " is " + this.age + " years old!"); } function Teacher(staffId){ this.staffId = staffId; } //通過prototype生命Teacher繼承Person Teacher.prototype = new Person(); var will = new Teacher(1000); will.name = "Will"; will.age = 28; 
  8. will.getInfo(); 

 

五、談?wù)勀銓υO(shè)計模式的認(rèn)識?結(jié)合你用得最多的一種設(shè)計模式說說它的使用。

出現(xiàn)指數(shù):五顆星

主要考點(diǎn):不用多說,這題考的就是對設(shè)計模式的理解。一般為了簡單可能會要求你寫一個單例模式,注意最好是寫一個完整點(diǎn)的,考慮線程安全的那種。然后會讓你說說你在項目中什么情況下會用到這種模式

參考答案:

通用寫法

 

  1. public class Singleton 
  2.  { 
  3.      // 定義一個靜態(tài)變量來保存類的實例 
  4.      private static Singleton uniqueInstance; 
  5.  
  6.      // 定義一個標(biāo)識確保線程同步 
  7.      private static readonly object locker = new object(); 
  8.  
  9.      // 定義私有構(gòu)造函數(shù),使外界不能創(chuàng)建該類實例 
  10.      private Singleton() 
  11.      { 
  12.      } 
  13.  
  14.      /// <summary> 
  15.      /// 定義公有方法提供一個全局訪問點(diǎn),同時你也可以定義公有屬性來提供全局訪問點(diǎn) 
  16.      /// </summary> 
  17.      /// <returns></returns> 
  18.      public static Singleton GetInstance() 
  19.      {// 雙重鎖定只需要一句判斷就可以了 
  20.          if (uniqueInstance == null
  21.          { 
  22.              lock (locker) 
  23.              { 
  24.                  // 如果類的實例不存在則創(chuàng)建,否則直接返回 
  25.                  if (uniqueInstance == null
  26.                  { 
  27.                      uniqueInstance = new Singleton(); 
  28.                  } 
  29.              } 
  30.          } 
  31.          return uniqueInstance; 
  32.      } 
  33.  } 

 

單例模式確保一個類只有一個實例,并提供一個全局訪問點(diǎn),它的使用場景比如任務(wù)管理 器整個系統(tǒng)中應(yīng)該只有一個把,再比如操作文件的對象,同一時間我們只能有一個對象去操作文件吧。最重要的,比如我們項目中用得非常多的功能→日志記錄,在 一個線程中,記錄日志的對象應(yīng)該也只能有一個吧。單例模式的目的是為了保證程序的安全性和數(shù)據(jù)的唯一性?;蛘吣阋部梢越Y(jié)合你使用的其他設(shè)計模式來說明。

六、IIS的工作原理?

出現(xiàn)指數(shù):四顆星

主要考點(diǎn):此題主要考的是.net framework和IIS是如何結(jié)合呈現(xiàn)頁面的。這是一個有點(diǎn)復(fù)雜的過程,面試的時候不可能說得完整,那么我們就抓住幾個關(guān)鍵點(diǎn)說說就可以。其實博主也不能完全理解這個過程,今天正好借這個機(jī)會溫習(xí)下。

參考答案:

1、當(dāng)客戶端發(fā)送HTTP Request時,服務(wù)端的HTTP.sys(可以理解為IIS的一個監(jiān)聽組件) 攔截到這個請求;

2、HTTP.sys 聯(lián)系 WAS 向配置存儲中心請求配置信息。

3、然后將請求傳入IIS的應(yīng)用程序池。

4、檢查請求的后綴,啟動aspnet_isapi.dll這個dll,這個dll是.net framework里面的,也就是說到這一步,請求進(jìn)入了.net framework的管轄范圍。

5、這個時候如果是WebForm,開始執(zhí)行復(fù)雜的頁面生命周期(HttpRuntime→ProcessRequest→HttpContext→HttpHandler);如果是MVC,則啟動mvc的路由機(jī)制,根據(jù)路由規(guī)則為URL來指定HttpHandler。

6、httpHandler處理請求后,請求結(jié)束,給出Response,客戶端處理響應(yīng),整個過程結(jié)束。

七、Http協(xié)議

出現(xiàn)指數(shù):四顆星

主要考點(diǎn):此題主要考對于web里面http協(xié)議的理解。

參考答案:

1、http協(xié)議是瀏覽器和服務(wù)器雙方共同遵循的規(guī)范,是一種基于TCP/IP應(yīng)用層協(xié)議。

2、http是一種典型的請求/響應(yīng)協(xié)議??蛻舳税l(fā)送請求,請求的內(nèi)容以及參數(shù)存放到請求報文里面,服務(wù)端收到請求后,做出響應(yīng),返回響應(yīng)的結(jié)果放到響應(yīng)報文里面。通過F12可以查看請求報文和響應(yīng)報文。

3、http協(xié)議是”無狀態(tài)”的,當(dāng)客戶端向服務(wù)端發(fā)送一次http請求后,服務(wù)端收到請求然后返回給客戶端相應(yīng)的結(jié)果,服務(wù)器會立即斷開連接并釋放資源。在實際開發(fā)過程中,我們有時需要“保持”這種狀態(tài),所以衍生出了Session/Cookie這些技術(shù)。

4、http請求的方式主要有g(shù)et/post。

5、http狀態(tài)碼最好記幾個,博主有一次面試就被問到了。200(請求成功)、404(請求的資源不存在)、403(禁止訪問)、5xx(服務(wù)端錯誤)

八、數(shù)據(jù)庫優(yōu)化經(jīng)驗(后端工程師非常常見)

出現(xiàn)指數(shù):四顆星

主要考點(diǎn):此題考察后端工程師操作數(shù)據(jù)庫的經(jīng)驗。說實話,數(shù)據(jù)庫是博主的弱項,博主覺得對于這種考題,需要抓住幾個常用并且關(guān)鍵的優(yōu)化經(jīng)驗,如果說得不對,歡迎大家斧正。

參考答案:

1、數(shù)據(jù)庫運(yùn)維方面的優(yōu)化:啟用數(shù)據(jù)庫緩存。對于一些比較常用的查詢可以采用數(shù)據(jù)庫緩存的機(jī)制,部署的時候需要注意設(shè)置好緩存依賴項,防止“過期”數(shù)據(jù)的產(chǎn)生。

2、數(shù)據(jù)庫索引方面的優(yōu)化:比如常用的字段建索引,聯(lián)合查詢考慮聯(lián)合索引。(PS:如果你有基礎(chǔ),可以敞開談?wù)劸奂饕头蔷奂饕氖褂脠鼍昂蛥^(qū)別)

3、數(shù)據(jù)庫查詢方面的優(yōu)化:避免select * 的寫法、盡量不用in和not in 這種耗性能的用法等等。

4、數(shù)據(jù)庫算法方面的優(yōu)化:盡量避免大事務(wù)操作、減少循環(huán)算法,對于大數(shù)據(jù)量的操作,避免使用游標(biāo)的用法等等。

九、關(guān)于代碼優(yōu)化你怎么理解?你會考慮去代碼重構(gòu)嗎?

出現(xiàn)指數(shù):四顆星

主要考點(diǎn):此題考的是面試者對代碼優(yōu)化的理解,以及代碼如何重構(gòu)的相關(guān)知識。

參考答案:

1、對于代碼優(yōu)化,之前的公司每周會做代碼審核,審核的主要作用就是保證代碼的正確性和執(zhí)行效率,比如減少代碼的層級結(jié)構(gòu)、避免循環(huán)嵌套、避免循環(huán)CURD數(shù)據(jù)庫、盡量避免一次取出大量數(shù)據(jù)放在內(nèi)存中(容易內(nèi)存溢出)、優(yōu)化算法等。

2、對于陳舊代碼,可能很多地方有調(diào)用,并且開發(fā)和維護(hù)人員很有可能不是同一個人,所以重構(gòu)時要格外小心,如果沒有十足的把握,不要輕易重構(gòu)。如果必須要重構(gòu),必須做好充分的單元測試和全局測試。

十、談?wù)勀愕膬?yōu)點(diǎn)和缺點(diǎn)?

出現(xiàn)指數(shù):四顆星

主要考點(diǎn):這道題讓人有一種罵人的沖動,但是沒辦法,偏偏很多所謂的大公司會問這個。比如華為。這個問題見仁見智,答案可以自己組織。

參考答案:

優(yōu)點(diǎn):對于新的技術(shù)學(xué)習(xí)能力強(qiáng),能很快適應(yīng)新環(huán)境等等

缺點(diǎn):對技術(shù)太過于執(zhí)著等等

十一、關(guān)于服務(wù)器端 MVC 架構(gòu)的技術(shù)實現(xiàn),您是怎樣理解的?這種架構(gòu)方式有什么好處?您在項目中是如何應(yīng)用這一架構(gòu)的?

出現(xiàn)指數(shù):三顆星

主要考點(diǎn):此題主要考的對于MVC這種框架的理解。

參考答案:MVC,顧名思義,Model、View、Controller。所有的 界面代碼放在View里面,所有涉及和界面交互以及URL路由相關(guān)的邏輯都在Controller里面,Model提供數(shù)據(jù)模型。MVC的架構(gòu)方式會讓系 統(tǒng)的可維護(hù)性更高,使得每一部分更加專注自己的職責(zé),并且MVC提供了強(qiáng)大的路由機(jī)制,方便了頁面切換和界面交互。然后可以結(jié)合和WebForm的比較, 談?wù)凪VC如何解決復(fù)雜的控件樹生成、如何避免了復(fù)雜的頁面生命周期。

十二、網(wǎng)站優(yōu)化:網(wǎng)站運(yùn)行慢,如何定位問題?發(fā)現(xiàn)問題如何解決?

出現(xiàn)指數(shù):三顆星

主要考點(diǎn):此題和問題一類似,考察Web的問題定位能力和優(yōu)化方案。

參考答案:

瀏覽器F12→網(wǎng)絡(luò)→查看http請求數(shù)以及每個請求的耗時,找到問題的根源,然后依次解決,解決方案可以參考問題一里面的Web優(yōu)化方案。

十三、說說你最擅長的技術(shù)?并說說你是如何使用的?

出現(xiàn)指數(shù):三顆星

主要考點(diǎn):這是一道非常開放的面試題。最初遇到這種問題,博主很想來一句:你妹,這叫什么問題!但確實有面試官問到?;仡^想想,其實此題考查你擅長的技術(shù)的涉及深度。其實博主覺得對于這個問題,可以結(jié)合你項目中用到的某一個技術(shù)來說就好了。

參考答案:

 簡單談?wù)凪EF在我們項目里面的使用吧。

在談MEF之前,我們必須要先談?wù)凞IP、IOC、DI

依賴倒置原則(DIP):一種軟件架構(gòu)設(shè)計的原則(抽象概念)

控制反轉(zhuǎn)(IoC):一種反轉(zhuǎn)流、依賴和接口的方式(DIP的具體實現(xiàn)方式)。

依賴注入(DI):IoC的一種實現(xiàn)方式,用來反轉(zhuǎn)依賴(IoC的具體實現(xiàn)方式)。

什么意思呢?也就是說,我們在軟件架構(gòu)的過程中,層和層之間通過接口依賴,下層不是 直接給上層提供實現(xiàn),而是提供接口,具體的實現(xiàn)以依賴注入的方式在運(yùn)行的時候動態(tài)注入進(jìn)去。MEF就是實現(xiàn)依賴注入的一種組件。它的使用使得UI層不直接 依賴于BLL層,而是依賴于中間的一個IBLL層,在程序運(yùn)行的時候,通過MEF動態(tài)將BLL里面的實現(xiàn)注入到UI層里面去,這樣做的好處是減少了層與層 之間的耦合。這也正是面向接口編程方式的體現(xiàn)。

十四、自己寫過JS組件嗎?舉例說明。

出現(xiàn)指數(shù):三顆星

主要考點(diǎn):此題考的js組件封裝和js閉包的一些用法。一般來說,還是筆試出現(xiàn)的幾率較大。

參考答案:自定義html的select組件

  1. //combobox 
  2. (function ($) { 
  3.     $.fn.combobox = function (options, param) { 
  4.         if (typeof options == 'string') { 
  5.             return $.fn.combobox.methods[options](this, param); 
  6.         } 
  7.         options = $.extend({}, $.fn.combobox.defaults, options || {}); 
  8.         var target = $(this); 
  9.         target.attr('valuefield', options.valueField); 
  10.         target.attr('textfield', options.textField); 
  11.         target.empty(); 
  12.         var option = $('<option></option>'); 
  13.         option.attr('value'''); 
  14.         option.text(options.placeholder); 
  15.         target.append(option); 
  16.         if (options.data) { 
  17.             init(target, options.data); 
  18.         } 
  19.         else { 
  20.             //var param = {}; 
  21.             options.onBeforeLoad.call(target, option.param); 
  22.             if (!options.url) return
  23.             $.getJSON(options.url, option.param, function (data) { 
  24.                 init(target, data); 
  25.             }); 
  26.         } 
  27.         function init(target, data) { 
  28.             $.each(data, function (i, item) { 
  29.                 var option = $('<option></option>'); 
  30.                 option.attr('value', item[options.valueField]); 
  31.                 option.text(item[options.textField]); 
  32.                 target.append(option); 
  33.             }); 
  34.             options.onLoadSuccess.call(target); 
  35.         } 
  36.         target.unbind("change"); target.on("change", function (e) { if (options.onChange) return options.onChange(target.val()); }); } $.fn.combobox.methods = { getValue: function (jq) { return jq.val(); }, setValue: function (jq, param) { jq.val(param); }, load: function (jq, url) { $.getJSON(url, function (data) { jq.empty(); var option = $('<option></option>'); option.attr('value'''); option.text('請選擇'); jq.append(option); $.each(data, function (i, item) { var option = $('<option></option>'); option.attr('value', item[jq.attr('valuefield')]); option.text(item[jq.attr('textfield')]); jq.append(option); }); }); } }; $.fn.combobox.defaults = { url: null, param: null, data: null, valueField: 'value', textField: 'text', placeholder: '請選擇', onBeforeLoad: function (param) { }, onLoadSuccess: function () { }, onChange: function (value) { } 
  37.     }; 
  38. })(jQuery); 

調(diào)用的時候
  1. $("#sel_search_orderstatus").combobox({ 
  2.     url: '/apiaction/Order/OrderApi/GetOrderStatu'
  3.     valueField: 'VALUE'
  4.     textField: 'NAME' 
  5. }); 

就能自動從后臺取數(shù)據(jù),注意valueField和textField對應(yīng)要顯示和實際值。

十五、自己寫過多線程組件嗎?簡要說明!

出現(xiàn)指數(shù):三顆星

主要考點(diǎn):此題是兩年前博主在攜程的一次電話面試中遇到的,其他地方基本上沒遇到過,其實到現(xiàn)在也不能理解當(dāng)時面試官問這個問題的目的。但我想,此問題必有出處,估計面試官是想了解你對多線程以及線程池等的理解深度。

參考答案:可以參考http://www.cnblogs.com/Alexander-Lee/archive/2009/10/31/1593647.html

以上就是博主根據(jù)自己的理解做的一些總結(jié),如果有不對的地方,歡迎指出。當(dāng)然,如果園友們覺得還有哪些沒涉及到但是出現(xiàn)頻率非常高的面試題,歡迎提出,大家一起討論,一起進(jìn)步。如果文章或多或少能夠幫到你,請幫忙推薦吧,千萬不要客氣~~

責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2010-08-25 15:49:04

面試

2016-05-31 16:50:33

2011-05-25 17:08:29

ibmdwLinux

2015-10-19 16:51:01

2013-01-28 16:51:45

2018-10-11 17:43:15

人臉識別人工智能AI

2015-01-07 10:45:05

Dockerkubernetescontain

2011-05-25 10:15:47

開源

2011-01-12 09:37:59

2018-10-16 18:26:52

人工智能AI

2020-03-26 17:28:22

CIO觀點(diǎn)MES系統(tǒng)制造企業(yè)

2025-02-20 08:11:52

2015-09-08 16:04:06

云災(zāi)備華為

2021-01-08 05:18:54

網(wǎng)絡(luò)自動化運(yùn)維

2015-06-24 16:03:24

大數(shù)據(jù).SAS

2011-08-30 09:28:36

編程

2018-06-05 10:22:33

2021-04-28 11:38:10

“熄燈”數(shù)據(jù)中心數(shù)據(jù)中心運(yùn)維

2012-10-25 09:47:01

BYOD

2021-10-26 16:05:07

云計算視頻監(jiān)控云應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號