每日一道面試題(後臺)

#每日一道面試題#html

開篇:前端

從今天開始,每日一道面試題,幫助羣裏的小夥伴們進行面試題輔導提升,還請你們踊躍回覆參與其中,針對人羣:中級及高級開發人員,同時歡迎大神給與點評或板磚面試

爲了表現的我分兩篇介紹,分別爲偏前端,後端,注意只是偏向不一樣算法

每日一道面試題(前端)sql

每日一道面試題(後臺)數據庫

開始以前我先申明一下編程

全部面試題的答案均不是惟一的,全部題目的答案都是仁者見智的回答,若是本身之前不知道,能夠看一下,知道的,結合本身之前的作個對比吧,以爲有問題的,請直接留言或加入QQ羣:70895254後端

閒話少說,言歸正傳,面試題直接上:瀏覽器

1、請解釋進程與線程的區別?進程與程序的區別?    2017-04-05緩存

答:進程(process)是一塊包含了某些資源的內存區域;進程中所包含的一個或多個執行單元稱爲線程(thread),進程是系統進行資源分配和調度的一個獨立單位。線程是進程的一個實體,是CPU調度和分派的基本單位

1)線程是進程的一部分,因此線程有的時候被稱爲是輕權進程或者輕量級進程;

2)資源擁有: 系統會進程分配內存區域,可是不會爲線程分配內存,線程只能共享資源

3)空間地址:進程是系統全部資源分配時候的一個基本單位,擁有一個完整的虛擬空間地址,並不依賴線程而獨立存在。

4)兩者能夠併發執行

進程和應用程序的區別:

1)進程是程序及其數據在計算機的一次運行活動,是一個運行過程,是一個動態的概念。進程的運行實體是程序,離開程序的進程沒有存在的意義。而程序是一組有序的指令集合,是一種靜態概念。

2)進程是程序的一次執行過程,它是動態地建立和消亡的,具備必定的生命週期,是暫時存在的;而程序則是一組代碼的集合,它是永久存在的,可長期保存。

3)一個進程能夠執行一個或幾個程序,一個程序也能夠構成多個進程。進程能夠建立進程,而程序不能造成新的程序。

4)進程和程序的組成不一樣。從靜態角度看,進程由程序、數據和進程控制塊(PCB)三部分組成。而程序是一組有序的指令集合。

2、簡述ASP.NET請求的生命週期?2017-04-06

這個自行google或百度吧,太多了,不想寫了

3ORM中的延遲加載與直接加載有什麼異同?(2017-04-07)

答:延遲加載(lazy loading)(也稱爲懶加載),延遲加載機制是爲了不一些無謂的性能開銷而提出來的,所謂延遲加載就是將對象的初始化延遲,在程序使用該對象時纔去初始化。

直接加載(Eager loading)(也成當即加載),直接加載就是在程序初始化時將程序中用到的全部的對象也初始化,這樣會下降程序的效率。

簡單的理解就是:只在須要的時候纔去加載必要的數據,這樣能夠避免即時加載所帶來的沒必要要的系統開銷

4、值類型和引用類型的區別?  2017-04-10

答:相同點:引用類型能夠實現接口,值類型當中的結構體也能夠實現接口;

引用類型和值類型都繼承自System.Object類。幾乎全部的引用類型都直接從System.Object繼承,而值類型則繼承其子類,即直接繼承System.ValueType。System.ValueType直接派生於System.Object. 即System.ValueType自己是一個類類型,而不是值類型。其關鍵在於ValueType重寫了Equals()方法,從而對值類型按照實例的值來比較,而不是引用地址來比較。

不一樣點:引用類型存儲在託管堆上,值類型一般存儲在棧上(引用類型在棧中存儲一個引用,實際位置位於託管隊);

引用類型與值類型相同的是,結構體也能夠實現接口;

引用類型能夠派生出新的類型,而值類型不能;

引用類型能夠包含null值,值類型不能(可空類型功能容許將 null 賦給值類型);

引用類型變量的賦值只複製對對象的引用,而不復制對象自己。而將一個值類型變量賦給另外一個值類型變量時,將複製包含的值

值類型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 統稱爲值類型。值類型變量聲明後,無論是否已經賦值,編譯器爲其分配內存。

引用類型(reference type):string 和 class統稱爲引用類型。當聲明一個類時,只在棧中分配一小片內存用於容納一個地址,而此時並無爲其分配堆上的內存空間。當使用 new 建立一個類的實例時,分配堆上的空間,並把堆上空間的地址保存到棧上分配的小片空間中

PS:11-13號小姨子結婚,我休假三天,這三天由未央、娘炮,也然出題並整理答案

5C#中的委託是什麼?事件是否是一種委託?2017-04-11未央)

答:委託能夠把一個方法做爲參數代入另外一個方法。委託能夠理解爲指向一個函數的指針。

委託和事件沒有可比性,由於委託是類型,事件是對象,下面說的是委託的對象(用委託方式實現的事件)和(標準的event方式實現)事件的區別。事件的內部是用委託實現的。由於對於事件來說,外部只能「註冊本身+=、註銷本身-=」,外界不能夠註銷其餘的註冊者,外界不能夠主動觸發事件,所以若是用Delegate就無法進行上面的控制,所以誕生了事件這種語法。事件是用來閹割委託實例的,類比用一個自定義類閹割List。事件只能add、remove本身,不能賦值。事件只能+=、-=,不能= 。加分的補充回答:事件內部就是一個private的委託和add、remove兩個方法

6、默認的Session存在什麼問題?如何解決?2017-04-12未央)

答: session四中存儲方式的iis進程,sqlserver,狀態服務器,還有一種就是自寫程序,默認存儲在iis進程中,可是進程奔潰或重啓的時候,session會丟失;(歡迎補充)

7、簡述ASP.NET的幾種頁面傳值方式?      2017-04-13也然)

答:querystring  session  cookie  application  Server.transfer

8override與重載(overload)的區別?(2017-04-14

答:重載是方法的名稱相同。參數或參數類型不一樣,進行屢次重載以適應不一樣的須要。重載(overload)是面向過程的概念。Override 是進行基類中函數的重寫。Override是面向對象的概念

9、簡述Using語法的做用。2017-04-14  涼諾)

答:1.引用命名空間 using system.net

    2.2.處理非託管對象,保證其正確釋放資源;

using( SqlConnection con = new SqlConnection(str) ){

            //TODO:your code;

}

10、抽象類和接口的區別和聯繫?2017-04-14  涼諾)

答:1)抽象類和接口都不能直接實例化,若是要實例化,抽象類變量必須指向實現全部抽象方法的子類對象,接口變量必須指向實現全部接口方法的類對象。

2)抽象類要被子類繼承,接口要被類實現。

3)接口只能作方法申明,抽象類中能夠作方法申明,也能夠作方法實現

4)接口裏定義的變量只能是公共的靜態的常量,抽象類中的變量是普通變量。

5)抽象類裏的抽象方法必須所有被子類所實現,若是子類不能所有實現父類抽象方法,那麼該子類只能是抽象類。一樣,一個實現接口的時候,如不能所有實現接口方法,那麼該類也只能爲抽象類。

6)抽象方法只能申明,不能實現。abstract void abc();不能寫成abstract void abc(){}。

7)抽象類裏能夠沒有抽象方法

8)若是一個類裏有抽象方法,那麼這個類只能是抽象類

9)抽象方法要被實現,因此不能是靜態的,也不能是私有的。

10)接口可繼承接口,並可多繼承接口,但類只能單根繼承。

  特別是對於公用的實現代碼,抽象類有它的優勢。抽象類可以保證明現的層次關係,避免代碼重複。然而,即便在使用抽 象類的場合,也不要忽視經過接口定義行爲模型的原則。從實踐的角度來看,若是依賴於抽象類來定義行爲,每每致使過於複雜的繼承關係,而經過接口定義行爲能 夠更有效地分離行爲與實現,爲代碼的維護和修改帶來方便。

11、在C#中,string str = null 與 string str = 「」 請說明其區別。?2017-04-14  涼諾)

答:String Str="";表示一個空串,被實例化了,佔用了內存空間,而String Str=null;但沒有分配內存空間,是一個空引用;""分配一個長度爲空的存儲空間,因此通常用string.Empty,在 C# 中,大多數狀況下 "" 和 string.Empty 能夠互換使用,斷定爲空字符串的幾種寫法,按照性能從高到低的順序是:s.Length == 0      優於 s == string.Empty      優於 s == "";

12、談一談什麼是Delegate?  2017-04-17

答:參考一下吧http://www.cnblogs.com/jackson0714/p/5111347.html
13、如何處理百萬條數據的優化?  2017-04-18

答:能夠從如下幾個方面入手

(1)減小數據訪問(減小磁盤訪問)

    1.1)正確建立索引

    1.2)只經過索引訪問數據

    1.3)優化SQL執行計劃

(2)返回更少數據(減小網絡傳輸或磁盤訪問)

    2.1)分頁:客戶端分頁、服務端分頁、數據庫分頁

    2.2)只返回須要的字段

    2.3)減小客戶端內存佔用

(3)減小交互次數(減小網絡傳輸)

    3.1)batch 操做

    3.2)設置Fetch Size

(4)減小服務器CPU開銷(減小CPU及內存開銷)

    4.1)使用綁定變量

    4.2)合理使用排序

    4.3)減小比較操做

    4.4)大量複雜運算在客戶端處理

(5)利用更多資源(增長資源)

    5.1)客戶端多進程並行訪問

    5.2)數據庫並行處理

(6)緩存機制

    6.1)創建告訴緩存機制

    6.2) 若有條件能夠所有內存處理

以上自上而下優化成本依次遞增

sql優化詳細參考:http://www.open-open.com/lib/view/open1389705004242.html

參考:http://blog.csdn.net/libing13820393394/article/details/48634525

14、談談你對MVC路由理解? (2017-04-20)

答:MVC是Model—View—Controler的簡稱。即模型—視圖—控制器

MVC基本的處理流程:來了一個URL請求, 從中找到Controller和Action的值, 將請求傳遞給Controller處理. Controller獲取Model數據對象, 而且將Model傳遞給View, 最後View負責呈現頁面。url請求有contriller實現中體現路由機制:通常是由路由名稱,路由模式和默認值構成的

一、匹配傳入的請求:url Routing的做用是將瀏覽器的URL請求映射到特定的MVC控制器動做。

二、構造傳出的URL,用來響應控制器中的操做:當咱們訪問http://localhost:8080/Home/Index 這個地址的時候,請求首先被UrlRoutingModule截獲,截獲請求後,從Routes中獲得與當前請求URL相符合的RouteData對象, 將RouteData對象和當前URL封裝成一個RequestContext對象,而後從Requestcontext封裝的RouteData中獲得 Controller名字,根據Controller的名字,經過反射建立控制器對象,這個時候控制器才真正被激活,最後去執行控制器裏面對應的 action。

Routing(路由)的做用

一、匹配傳入的請求(不匹配服務器物理文件);

二、將請求映射到 控制器 的具體操做 Action方法 和 參數;

三、調用並執行對應 控制器 類的 Action 方法;

15、ORM實現原理?你經常使用的ORM框架?(2017-04-21)

答:概念:對象關係映射(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程序技術,用於實現面向對象編程語言裏不一樣類型系統的數據之間的轉換。

詳細介紹:讓咱們從O/R開始。字母O起源於"對象"(Object),而R則來自於"關係"(Relational)。幾乎全部的程序裏面,都存在對象和關係數據庫。在業務邏輯層和用戶界面層中,咱們是面向對象的。當對象信息發生變化的時候,咱們須要把對象的信息保存在關係數據庫中。

    當你開發一個應用程序的時候(不使用O/R Mapping),你可能會寫很多數據訪問層的代碼,用來從數據庫保存,刪除,讀取對象信息,等等。你在DAL中寫了不少的方法來讀取對象數據,改變狀態對象等等任務。而這些代碼寫起來老是重複的。

    ORM解決的主要問題是對象關係的映射。域模型和關係模型分別是創建在概念模型的基礎上的。域模型是面向對象的,而關係模型是面向關係的。通常狀況下,一個持久化類和一個表對應,類的每一個實例對應表中的一條記錄,類的每一個屬性對應表的每一個字段。

ORM技術特色:

    1.提升了開發效率。因爲ORM能夠自動對Entity對象與數據庫中的Table進行字段與屬性的映射,因此咱們實際可能已經不須要一個專用的、龐大的數據訪問層。

2.ORM提供了對數據庫的映射,不用sql直接編碼,可以像操做對象同樣從數據庫獲取數據。

.Net經常使用ORM框架: (必須熟悉兩種以上的框架,而且能深入理解)

  NHibernate

  NBear

  Castle ActiveRecord

  iBATIS.NET

  DAAB 

  EntitysCodeGenerate

 EntityFormerWork

 Linq to sql

 PetaPoco

參考:http://www.cnblogs.com/haofuqi/p/3906777.html

PS:本週的面試題:2017-04-24~2017-05-01

15~40 題目:

1.靜態成員和非靜態成員的區別?
2.const 和 static readonly 區別?
3.extern 是什麼意思?
4.abstract 是什麼意思?
5.internal 修飾符起什麼做用?
6.sealed 修飾符是幹什麼的?
7.override 和 overload 的區別?
8.什麼是索引指示器?
9.new 修飾符是起什麼做用?
10.this 關鍵字的含義?
11.可使用抽象函數重寫基類中的虛函數嗎?
12.密封類能夠有虛函數嗎?
13.什麼是屬性訪問器?
14.abstract 能夠和 virtual 一塊兒使用嗎?能夠和 override 一塊兒使用嗎?
15.接口能夠包含哪些成員?
16.類和結構的區別?
17.接口的多繼承會帶來哪些問題?
18.抽象類和接口的區別?
19.別名指示符是什麼?
20.如何手工釋放資源?
21.P/Invoke是什麼?
22.StringBuilder 和 String 的區別?
23.explicit 和 implicit 的含義?
24.params 有什麼用?
25.什麼是反射?

參考地址:http://www.cnblogs.com/51pansou/p/5283772.html

兩週的面試題: 2017-05-02~2017-05-12

40~50 題目:

排序算法題目

41、冒泡排序(Bubble Sort)  (2017-05-01)

42、選擇排序(Selection Sort)(2017-05-02)

43、插入排序(Insertion Sort)(2017-05-03)

44、希爾排序(Shell Sort)(2017-05-04)

45、歸併排序(Merge Sort)(2017-05-05)

46、快速排序(Quick Sort)(2017-05-08)

47、堆排序(Heap Sort)(2017-05-09)

48、計數排序(Counting Sort)(2017-05-10)

49、桶排序(Bucket Sort)(2017-05-11)

50、基數排序(Radix Sort)(2017-05-12)

十大經典算法:http://www.cnblogs.com/wzhiq896/p/5904891.html

結束語:

面試題萬變不離其宗,只要每一道例題都吃透了,通常的面試是沒有問題,可是面試除了面試題,口語表達能力也是很是重要的一個環節,固然了這是另一個話題,有時間我在出一個帖子,把你們的面試經歷收集一下,整理出來供羣內的小夥伴們參考學習;

相關文章
相關標籤/搜索