




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、北森測評一一中國最大的人才測評解決方案提供商第 頁筆試題(只寫關鍵點或思路即可):線程、進程區別。線程間通信方式、進程間通信方式?進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的并發性。進程和線程的區別在于:簡而言之,一個程序至少有一個進程,一個進程至少有一個線程.1.1數據庫中各種組件、觸發器、索引、容器?刪除一張表中全部數據,都有哪些方法?最快的是哪種?為什么?SQL:1.刪除表中所有內容:deletefromtable_nametable_name是表名2.刪除所有的表:請問你用的哪個數據庫?這里給出oracle的方法(A,B兩種):oracle不能
2、刪除所有的表,只能刪除所有用戶下的表,所有的表都刪了,數據庫就完蛋了(有一些系統表)方法Aselectdroptable|table_name|cascade;fromuser_tables該語句的查詢結果是N個刪除語句,將其復制,然后在sql窗口運行即可方法Bdropuser用戶名cascade這句話一下搞定,連用戶也沒了(一次只能刪除一個用戶下所有的表)oracle:TRUNCATETABLEtableNametableName是要刪除全部行的表的表名TRUNCATETABLE雖然與不帶WHERE的DELETE語句相同但TRUNCATETABLE速度更快而且占資源少速度快TRUNCATET
3、ABLE不記錄日志所以不能激活觸發器TRUNCATETABLE不能用于參與了索引視圖的表TRUNCATETABLEdzjc.dzjc_yhmc;TRUNCATETABLEdzjc.dzjc_yhmc;3往數據庫中加載1000萬的數據,有哪些方法?最快的是哪種?為什么?對正常的數據庫比如sqlserver或oracle,lOOOw不是太多問題。oracle有一個工具叫sqlloader,load1000W級數據最快可以在10幾分鐘完成。我用C#程序插入100W條數據到sqlserver2005可以在3分鐘內完成。因為影響因素太多,很難說哪個最快。追問“100W條數據到sqlserver2005可
4、以在3分鐘內完成”能否看一下你的代碼。有多少原因就說多少,大家可以討論一下回答代碼早就不在了,當時就是為了驗證數據庫速讀寫的最普通的ADO.NET代碼。記得表只有3,4列,用RAND產生隨機數,插入數據庫。數據庫和application在同一個工作站。一下想到的影響因素包括:網絡帶寬,connectionpool管理機制。applicationserver的速度。3數據庫server的CPU速度。數據庫server的硬盤速度。數據庫的partition情況。當時數據庫的負荷。數據庫設計,主鍵的設計,索引的多少和分布情況,有多少列,各列的數據分布。8數據庫server,applicationse
5、rver的內存。請簡述生產者消費者模型的基本原理、關鍵數據結構、典型應用場景。在電信領域業務中,“生產者-消費者(P-C)”的應用場景較為常見。在部門的多個產品中,就有幾種“生產者-消費者”應用場景的實現。本周部門內部做了一次技術交流,談到不同產品中關于“生產者-消費者”模式實現的差異以及優劣,這里匯總了一下思路簡要說明一下。“生產者-消費者”問題又被稱作“有限緩沖區”問題,即至少一個生產者與至少一個消費者針對一個公用的初始大小固定的緩沖區進行操作。首先緩沖區是公用的或者說是共享的。Producer進程(簡稱P進程,這里我們主要針對進程間的P-C問題)將消息生產出來后,放入緩沖區,Consum
6、er進程(簡稱C進程)從緩沖區取出消息。這個緩沖區一般被實現為隊列結構,比如基于共享內存隊列結構。有了緩沖區后,下面就是P進程和C進程之間如何配合的問題了。信手拈來的簡單方案:我們可以通過進程間的互斥鎖對緩沖區進行互斥訪問以解決多個P進程和P個C進程之間的配合問題。這樣P、C進程,特別是C進程在實現邏輯上相對較為簡單,即不停的嘗試去lockmutex,但多數時間C進程可能都在忙等待,空耗計算資源。這種配合基本上完全由操作系統調度來完成對緩沖區的互斥操作。為了減少忙等待,對P、C的配合過程增加一些控制力,可提出進一步的方案:采用條件變量。C進程在條件變量上等待,P進程生產出數據后,可采用特定邏輯
7、去喚醒某個C或者全部C進程(broadcast)。以上兩個方案都很簡單,但都有一個較為嚴重的缺陷,那就是C進程多數情況下都在掛起狀態,在緩沖區沒有數據的情況下也無法去做別的事情。當然如果你的應用場景就是這樣的,那就無可厚非了。我們的應用場景不是這樣的,所以我們還要繼續演進下去。很久以前部門的一位大牛同事就給出了一個方案:依舊是基于條件變量,不同的是在C進程中創建了一個工作線程,并由該工作線程來做條件變量的等待。同時每個C進程中工作線程和主線程通過Pipe的方式配合。P進程主線程生成一條數據后,就會發起一個喚醒操作。被喚醒的C進程的工作線程則通過Pipe告知主線程,主線程一般通過多路復用(sel
8、ectorpoll)監聽Pipe并及時獲得通知去獲取緩沖去數據。這個方案還是蠻有靈光的,除了為每個C無端地增加了一個監聽線程。這個方案在我們的產品中運行了N多年,多數情況下很是穩定好用,但是也時常出現工作線程無法退出的問題:當C進程退出前,工作線程因無法從條件變量的阻塞狀態下喚醒并退出,導致主線程在join該工作線程時掛起而無法退出。另外一個開發部實現了一種替代方案:采用可靠信號機制+進程內Pipe機制。P進程在生產后數據發送Unix可靠信號(SIGRTMIN)給所有注冊的C進程。C進程設置的可靠信號處理函數的邏輯較為簡單,就是向Pipe寫入一個字節數據,這樣當信號中斷處理完畢后,C進程就可以
9、收到Pipe的P0LL_IN事件了。這種機制在線運行了兩年多,沒出現什么重大問題,不過Unix信號機制我們平時較少使用,有一定忌憚,也有一些擔心的:-軟中斷,一旦有不可重入的函數調用,會帶來很大隱患;-調試困難-如果C進程眾多,則每次都要發出大量信號,這兩天腦子中也考慮出一種方案(尚未完善),這里也不妨說一下:通過UnixFIFO做P、C進程間通知的機制。FIFO機制簡單、數據可靠,且在一定數據長度下的數據寫入都是原子操作。FIFO與緩沖區一道做初始化創建,欲操作緩沖區的P、C進程都要事先打開FIFO以寫入或讀出數據。P進程輸出數據后,向FIFo寫入數據以表示通知。某個C進程從FIFO中讀取通
10、知并開始處理緩沖區數據,每個進程一般只從FIFO讀取一個字節表示收到信號。深入思考一下,該機制雖然避免了前面提到的幾個問題,同時還是有若干看起來別扭的地方:-需傳入FIFO名字,-每次只有一個C進程能得到事件通知,無法做到broadcast。-FIFO銷毀前應注意檢查注冊到該FIFO上的進程是否都detached了。4性能瓶頸產生的原因主要有哪些?如何解決?解決IT系統性能問題的難點往往在于定位問題的根源。1也許不是服務器的問題2加快查詢速度3降低病毒防護的代價4讓中間層處于最佳狀態5優化網絡連接6調整Web服務器北森測評一一中國最大的人才測評解決方案提供商第 頁請簡要介紹幾種常見的設計模式及
11、適用場景。JavaScript設計模式共有兩部分。第一部分給出了實現具體設計模式所需要的面向對象特性的基礎知識,主要包括接口、封裝和信息隱藏、繼承、單體模式等內容。第二部分則專注于各種具體的設計模式及其在JavaScript語言中的應用,主要介紹了工廠模式、橋接模式、組合模式、門面模式等幾種常見的模式。請寫個算法,計算10的階乘。1000000的階乘呢?請寫個算法,折半搜索。線程的基本概念、線程的基本狀態以及狀態之間的關系,多線程有幾種實現方法?同步有幾種實現方法?線程指在程序執行過程中,能夠執行程序代碼的一個執行單位,每個程序至少都有一個線程,也就是程序本身。Java中的線程有四種狀態分別是
12、:運行、就緒、掛起、結束。多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口同步的實現方面有兩種,分別是synchronized,wait與notify接口和抽象類有什么區別?Override與重載有什么區別?接口和抽象類的概念不一樣。接口是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是,這個對象是什么。接口表示的是,這個對象能做什么。比如,男人,女人,這兩個類(如果是類的話),他們的抽象類是人。說明,他們都是人。人可以吃東西,狗也可以吃東西,你可以把“吃東西”定義成一個接口,然后讓這些類去實現它.所以,在高級語言上,一個類只能繼承一個類(抽象類)(正如人不可能同時是
13、生物和非生物),但是可以實現多個接口(吃飯接口、走路接口)。第一點.接口是抽象類的變體,接口中所有的方法都是抽象的。而抽象類是聲明方法的存在而不去實現它的類。第二點.接口可以繼承,抽象類不行第三點.接口定義方法,不能實現,而抽象類可以實現部分方法。第四點.接口中基本數據類型為static而抽類象不是的。當你關注一個事物的本質的時候,用抽象類;當你關注一個操作的時候,用接口。接口可以實現也可以繼承,抽象類不行抽象類的功能要遠超過接口,但是,定義抽象類的代價高。因為高級語言來說(從實際設計上來說也是)每個類只能繼承一個類。在這個類中,你必須繼承或編寫出其所有子類的所有共性。雖然接口在功能上會弱化許
14、多,但是它只是針對一個動作的描述。而且你可以在一個類中同時實現多個接口。在設計階段會降低難度的。override修飾符,覆寫一個基類中的方法.重載則是將將同名方法重新寫過,達到同名的函數實現不同的功能從而實現了一個方法有不同的版本.override與重載的本質區別是,加入了override的修飾符的方法,此方法始終只有一個被你使用的方法寫一個算法,在一個100萬記錄的數據表中,查找某個值的所有父節點,一個億的數據表中呢?createtabletestl(idintprimarykey,parentedint)go說明生活中遇到的二叉樹,用java實現二叉樹握手協議在TCP/IP協議中,TCP協
15、議提供可靠的連接服務,采用三次握手建立一個連接。第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+l),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。完成三次握手,客戶端與服務器開始傳送數據,在上述過程中,還有一些重要的概念:未連接隊列:在三次握手協議中,
16、服務器維護一個未連接隊列,該隊列為每個客戶端的SYN包(syn=j)開設一個條目,該條目表明服務器已收到SYN包,并向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連接在服務器處于Syn_RECV狀態,當服務器收到客戶的確認包時,刪除該條目,服務器進入ESTABLISHED狀態。Backlog參數:表示未連接隊列的最大容納數目。SYN-ACK重傳次數服務器發送完SYN-ACK包,如果未收到客戶確認包,服務器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連接信息從半連接隊列中刪除。注意,每次重傳等待的時間不一定相同。半連接存活
17、時間:是指半連接隊列的條目存活的最長時間,也即服務從收到SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和。有時我們也稱半連接存活時間為Timeout時間、SYN_RECV存活時間。簡單描述一下面向接口、面向對象、面向方面的區別?面向對象編程就是一堆對象,通過封裝、繼承、多態等更加有效的組織程序。面向接口編程就是一堆接口,通過接口規約對象的屬性和方法,是面向對象一部分。面向方面編程把業務的主邏輯和次邏輯分開的一種思想。面向對象不好解釋,可以理解為以一切元素都是對象,在設計時以對象為單位,考慮它的屬性及方法。設計中采用了封裝、繼承、抽象的手法面向接口本身就是面向對象
18、的,無所謂區別,只不過面向接口的好處是耦合性低面向方面Aspect-OrientedProgramming(AOP)就是大名鼎鼎的AOP。其實有點象struts里的攔截器。舉例:假設有在一個應用系統中,有一個共享的數據必須被并發同時訪問,首先,將這個數據封裝在數據對象中,稱為DataClass,同時,將有多個訪問類,專門用于在同一時刻訪問這同一個數據對象。為了完成上述并發訪問同一資源的功能,需要引入鎖Lock的概念,也就是說,某個時刻,當有一個訪問類訪問這個數據對象時,這個數據對象必須上鎖Locked,用完后就立即解鎖unLocked,再供其它訪問類訪問。這種加鎖與解鎖的操作可以使用攔截器來實
19、現。而攔截器本身就是面向方面編程的一個具體應用。簡述幾種軟件工程過程模型及優缺點、適用場景。你對Unity、IOC、AOP等概念是否熟悉?在開發過程如果運用了,都是為了實現哪些目的?Unity是微軟團隊開發的一個輕量級,可擴展的依賴注入容器,為松散耦合應用程序提供了很好的解決方案,支持構造器注入,屬性注入,方法注入。同時因為把對象交給容器創建,有沒有可能在創建的時候做些手腳和功能呢?答案是肯定的。目前Unity中提供兩個LifetimeManager類可供我們直接使用,當然你也可以實現自己的LifetimeManager類。ContainerControlledLifetimeManagerU
20、nity保存一個指向對象實例的引用。通過Unity容器為同一個類型或對象獲取對象實例時,每次獲取到的都是同一個實例。也就是說實現了對象單例模式。默認情況下,RegisterInstance方法使用該LifetimeManager。ExternallyControlledLifetimeManagerUnity僅保存一個指向對象實例的弱引用。通過Unity容器為同一個類型或對象獲取對象實例時,每次獲取到的都是同一個實例。但是由于當對象創建完之后,容器沒有對該對象的強引用,所以就可能出現當其他地方沒有去強引用它時候,會被GC回收掉。16.產品入庫表(ProductList)產品ID為主鍵。不同產品的入庫時間可能相同。產品ID(唯一)產品名稱數量入庫時間IDProductNameCountDateTime0001諾基亞N95202009-1-100:00:000002諾基亞N75302009-1-100:00:000003諾基亞N95302009-1-110:00:000004諾基亞N75502009-1-110:00:00用一條語句查詢所有產品的最后一次入賬記錄。Select*fromProductList17.用一條SQL語句查詢出每門課都大于80分的學生姓名namekechengfenshu張三語文81張三數學75李四語文76李四數學90王五語文81王五數學100王五英語90S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 核電設計活動方案
- 水庫中層活動方案
- 植樹節文藝宣傳活動方案
- 汽車售后服務活動方案
- 民生銀行青年節活動方案
- 樓盤公開活動方案
- 法律下基層活動方案
- 母子同調活動方案
- 歐藍德促銷活動方案
- 漢口兒童夏令營活動方案
- 診所托管合同協議
- 質量檢驗(測)技術服務企業數字化轉型與智慧升級戰略研究報告
- 信息必刷卷04(廣東省卷專用)2025年中考數學(解析版)
- 餐飲服務與管理課件 菜單的設計與制作
- 核電進廠考試題及答案
- 公司員工飲水管理制度
- 山東師范大學《大學英語本科(專升本)》期末考試復習題及參考答案
- 聲譽風險培訓
- 《SketchUp草圖大師教學》課件
- 職業技能培訓:保健按摩師
- 第二十章手術減肥及體形塑造美容手術美容外科學概論講解
評論
0/150
提交評論