程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 2011-2012 基礎C#面試題目及答案

2011-2012 基礎C#面試題目及答案

編輯:C#入門知識

 

此題目為公司HR而做,分初級(50分)、中級(60分)、高級程序員(70分)測試用。

 

基礎題(50分)

 

  題目A:現有sqlserver數據庫Test(數據庫連接帳號/密碼為:test/123)

 

    表Article(字段:ID,Title,Introduce,Content)

 

 

 

 

   1.使用ado.net寫出(題目A中)數據庫訪問的代碼(只寫函數,返回類型為DataSet) (10分)

       考察點:.net常用框架中日常工作的理解力、代碼規范

       答案:(考察點:1.使用Using,2.變量定義規范,3。需求的理解,要求寫函數和返回DataSet、數據庫表和鏈接帳號密碼)

 

   2.寫出(題目A中)此表的增加、刪除、修改存儲過程 (10分)

      考察點:對數據庫操作的熟悉程度

 

   3.常用的js類庫的熟悉程度及其原理(10分)

     如jquery  YUI等

     考察點:對常用WEB開發中類庫的使用熟練程度。

 

   4.傳統3層開發框架和MVC的理解(10分)

     參考答案:

          1.表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)(答對這個給2分)

          2.ASP.NET三層架構是一種理論,告訴你理論上怎麼分層,ASP.NET MVC 是一種實踐,告訴你了具體怎麼分層。(答對這個給3分)

 三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即為了 “高內聚,低耦合”的思想。(答對這個給5分)

1、表現層(UI):通俗講就是展現給用戶的界面,即用戶在使用一個系統的時候他的所見所得。  

2、業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理。  

3、數據訪問層(DAL):該層所做事務直接操作數據庫,針對數據的增添、刪除、修改、更新、查找等。

MVC是Model-View-Controller,嚴格說這三個加起來以後才是三層架構中的UI層,也就是說,MVC把三層架構中的UI層再度進行了分化,分成了控制器、視圖、實體三個部分,控制器完成頁面邏輯,通過實體來與界面層完成通話;而C層直接與三層中的BLL進行對話。

所以,.net的三層結構中,並沒有action這個概念。

 

   5.對c#泛型的理解和應用場景(10分)

    概念答案:

    泛型(generic)是C#語言2.0和通用語言運行時(CLR)的一個新特性。泛型為.NET框架引入了類型參數(type parameters)的概念。類型參數使得設計類和方法時,不必確定一個或多個具體參數,其的具體參數可延遲到客戶代碼中聲明、實現。這意味著使用泛型的類型參數T,寫一個類MyList<T>,客戶代碼可以這樣調用:MyList<int>,MyList<string>或MyList<MyClass>。這避免了運行時類型轉換或裝箱操作的代價和風險。

     應用場景:

       1.泛型避免裝箱拆箱的性能損耗

       2.代碼復用,比如用在ORM中

       3.參數的范圍約束

 

提高題(30分)

 

6.(題目A中)寫一個監控此表變化的觸發器 (8分) 

 

   考察點:對數據庫DB的深入一點理解(主要要區別對Update Insert Delete的監控)

 

 

 

 

7.WCF的概念及其應用場景(12分)(目前公司內部系統間接口使用)

   參考答案:

    WCF(原代號為Indigo)是一個用於創建和運行分布式系統的技術集合,使用它能創建安全的(Secure)、可靠的(Reliable)、跨平台的(transacted messaging along with interoperability)的分布式解決方案。它的面向服務的編程模型整合了.Net平台下以往全部的分布式開發技術,例如.Net Remoting,Asp.Net Xml Web Service,MSMQ,WSE,和Enterprise Service等,它可以支持跨應用程序域(AppDomain),進程(Process),網絡(NetWork)的進行數據通訊,而且能寄宿在諸如IIS,Windows Service,Console,Windows Application等多種宿主(Host)中。

   1.展開概念包括:契約Contract、地址Address、綁定Binding細節等

 

8.c# Cache的理解及其應用 (對比Application, Cache, Session, Cookie, Viewstate, Hidden, memcached的用法和區別)(15分)

   參考答案: 

   Application 任意大小(內存限制), 整個應用程序的生命周期, 所有用戶,服務器端 。

   Cache 任意大小(內存限制),程序指定生命周期,所有用戶,服務器端。(比較靈活)

   Session 小量數據, 某個用戶活動時間+ 延遲時間(默認20分鐘), 單個用戶, 服務器端。

   Cookie 小量數據, 程序指定生命周期, 單個用戶, 客戶端 。

   ViewState 小量數據,一個web頁面的生命期,單個用戶,客戶端。

   Hidden控件 小量簡單的數據,一個web頁面的生命期,單個用戶, 客戶端 。

   memcached非關系型數據庫,支持KEY/VALUE存儲和分布式,存儲時間可以設定。

 

9.對常用的設計模式的理解(至少要寫出一個,如簡單工廠模式)(8分)

    參考答案:

    簡單工廠模式是類的創建模式,又叫做靜態工廠方法模式。就是由一個工廠類根據傳入的參量決定創建出哪一種產品類的實例。一般涉及到三種角色(如下):

工廠類:擔任這個角色的是工廠方法模式的核心,含有與應用緊密相關的商業邏輯。工廠類在客戶端的直接調用下創建產品對象,它往往由一個具體的類實現。

抽象產品角色:擔任這個角色的類是由工廠方法模式所創建的對象的父類,或她們共同擁有的接口。一般由接口或抽象類實現。

具體產品角色:工廠方法模式所創建的任何對象都是這個角色的實例,由具體類實現。

 

簡單工廠模式優缺點:

模式的核心是工廠類,這個類負責產品的創建,而客戶端可以免去產品創建的責任,這實現了責任的分割。但由於工廠類集中了所有產品創建邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果增加新產品必須修改工廠角色的源碼。

 

加分題(20分)

 

   10.設計一個通用的日志存儲模塊:(4分)

      要求:考慮到不同監控對象日志的通用性、完整性和高性能

 

      考察要點:1.數據庫設計是否通用2.是否考慮分布式3.數據庫設計是否考慮大數據量並發(數據如何按照一定的維度拆分,但要考慮統計的性能)

 

 

 

 

   11.對Nosql數據庫和關系性數據庫的理解及實際應用場景(4分)

     1、High performance - 對數據庫高並發讀寫的需求

     2、Huge Storage - 對海量數據的高效率存儲和訪問的需求

     3、High Scalability && High Availability- 對數據庫的高可擴展性和高可用性的需求

  上面提到的“三高”需求面前,關系數據庫遇到了難以克服的障礙,所有才出現非關系性數據庫。

    包括:

    一、滿足極高讀寫性能需求的Kye-Value數據庫:Memcached Redis,Tokyo Cabinet,Flare

    二、滿足海量存儲需求和訪問的面向文檔的數據庫:MongoDB,CouchDB

    三、滿足高可擴展性和可用性的面向分布式計算的數據庫:Cassandra,Voldemort 

     應用場景:1.SNS 2.大數據量訪問的緩存,頂到數據庫前面。

     不適用的場景:電信、金融證券等要求大量事物的應用場景。

 

   12.項目管理中需求、架構、開發、測試、運維的實際體驗。(4分)

  

   13.設計一個高性能的分布式架構(4分)

     答案:(參考靜態頁面CDN和動態ask的架構)

        如:Cache+XML+MemCached+DB

 

   14.Map/Reduce的理解(4分)

  參考答案:

   MapReduce是一個最先由Google提出的分布式計算軟件構架,它可以支持大數據量的分布式處理。這個架構最初起源於函數式程式的map和reduce兩個函數組成。  MapReduce架構是用來解決大數據量的分布式計算問題,然後把計算後的結果放入文件系統或者數據庫中。

"Map":主結點讀入輸入數據,把它分成可以用相同方法解決的小數據塊(這裡是一個分而治之的思想),然後把這些小數據塊分發到不同的工作節點上(worder nodes)上,每一個工作節點(worder node)循環做同樣的事,這就行成了一個樹行結構(分布式計算中的很多模型都和圖論有關,pageRank也是),而每一個葉子節點有來處理每一個具體的小數據塊,再把這些處理結果返回給父節點。"Reduce":主結節得到所有子節點的處理結果,然後把所有結果組合並且返回到輸出。

MapReduce的一個特點是可以用map和reduceion方法來處理分布式計算的問題(這裡有一個移動計算而不是移動數據的概念,因為移動計算比移動數據代價更小)。這裡的每一個mapping操作都是相對獨立的,所有的maps都是並行運行的,雖然實踐中會受到數據源和cpu個數的影響。同樣的,這裡用一個reducer集合來執行reduction操作,所有帶有相同key的map輸出會聚集到同一個reducer。雖然這個過程看上去沒有串行計算來得高效,但是MapReduce能夠處理一般服務器所不能處理的大數據量處理問題。大型的服務器集群可以在幾個小時內處理petabyte數據量的排序問題。而並行處理可以提供部分容錯和出錯恢復的功能。當一個mapper或reducer失效時,整個工作就會被重新安排,從而不會影響工作的連續性

 

摘自 john66的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved