1
有7克,2克砝碼各一個,天平一隻,如何只用這些物品3次將140的鹽分爲50、90克各一份?
1、將140克鹽放天平兩邊平分兩份各70克;
2、將一份70克鹽平分兩份各35克;
3、將7克和2克砝碼各方天平一側,取一份35克鹽向天平兩端加知道左右平衡,此時與7克砝碼一側爲15克鹽,與2克砝碼一側爲20克鹽;
4、此時20克鹽加70克鹽爲90克,剩餘合併爲50克。
2
用二進制來編碼字符串“abcdabaa”,需要能夠根據編碼,解碼回原來的字符串,最少需要()長的二進制字符串?
這道題需要對abcd進行Huffman編碼。首先根據權值建立Huffman樹,得到最優編碼:
a=0, b=10, c=110, d=111
然後數一下就行了。答案爲14
3
輾轉相除法的時間複雜度爲log(n)
4
長度爲n的數組亂序存放着0至n-1. 現在只能進行0與其他數的交換,完成以下函數
public void sort(int[] array, int len) { int min, index;
for(int n = 1; n < len; n ++){ swapWithZero(array, len, array[n]);
min = array[0]; index = 0;
for(int j = n+1; j < len; j ++){ if(array[j] < min){ min = array[j]; index = j; } }
swapWithZero(array, len, array[index]); } } |
5
有ABCD四個人要在夜裏過一座橋,他們通過這座橋分別需要耗時1、2、5、10分鐘,現在只有一支手電,過橋時必須帶有手電,並且同時最多隻能兩個人一起過橋。請問如何安排能夠讓四個人儘快都過橋。
1和2 先過。1返回,5和10先過,2返回,1和2一起過。一共時間=2+1+10+2+2=17分鐘
6
七夕節n對戀人(n>=2)圍成一圈舉行篝火晚會。晚會的規則是:男女相同,且每對戀人處在相鄰的位置上。請問有多少種不同的圈子?
根據題設,要求不同的圈子,這意味着圈子可以轉動時造成的差異,可以不計。n個人站一豎排的全排列爲n!,n個人站一圈子且不計圈子轉動的差異的全排列爲(n-1)!。
又,n個人其實是2n個情侶,每組情侶有2種站位,n組有2^n種站位。
故,C對
7
你有一個3X3X3的立方體。你現在在正面左上的頂點,需要移動到對角線的背面右下的頂點中。每次移動不限距離,但只能從前至後、從左至右、從上至下運動,即不允許斜向或後退。有多少種方法?
這道題可以看成是3X3X3矩陣,xyz軸各走3步啊,從(3,3,3)走到(0,0,0),一共有:
C9 3 * C6 3 *
C3 3 = 1680
8
某招聘筆試共有120人蔘加,考試有6道題。1-6道分別有86人,88人,92人,76人,72人和70人答對,如果答對3道或3道以上通過筆試,問至少有多少人通過?
由題幹知共做題120×6=720,分別答對1至6題的共有86+88+92+76+72+70=484人次,則沒答對1至6題的人次爲720-484=236,當未通過考試的人都答錯4道題時,未通過考試的人最多,即共有236÷4=59人,那麼通過考試的至少有120-59=61人
9
列出數據庫中常用的鎖及其應用場景
解答:數據庫中的鎖是網絡數據庫中的一個非常重要的概念,它主要用於多用戶環境下保證數據庫完整性和一致性。各種大型數據庫所採用的鎖的基本理論是一致的,但在具體實現上各有差別。目前,大多數數據庫管理系統都或多或少具有自我調節、自我管理的功能,因此很多用戶實際上不 清楚鎖的理論和所用數據庫中鎖的具體實現。在數據庫中加鎖時,除了可以對不同的資源加鎖,還可以使用不同程度的加鎖方式,即鎖有多種模式,SQL Server中鎖模式包括:
1)共享鎖 SQL Server中,共享鎖用於所有的只讀數據操作。共享鎖是非獨佔的,允許多個併發事務讀取其鎖定的資源。默認情況下,數據被讀取後,SQL Server立即釋放共享鎖。例如,執行查詢“SELECT * FROM my_table”時,首先鎖定第一頁,讀取之後,釋放對第一頁的鎖定,然後鎖定第二頁。這樣,就允許在讀操作過程中,修改未被鎖定的第一頁。但是,事務 隔離級別連接選項設置和SELECT語句中的鎖定設置都可以改變SQL Server的這種默認設置。例如,“ SELECT * FROM my_table HOLDLOCK”就要求在整個查詢過程中,保持對錶的鎖定,直到查詢完成才釋放鎖定。
2)修改鎖 修 改鎖在修改操作的初始化階段用來鎖定可能要被修改的資源,這樣可以避免使用共享鎖造成的死鎖現象。因爲使用共享鎖時,修改數據的操作分爲兩步,首先獲得一 個共享鎖,讀取數據,然後將共享鎖升級爲獨佔鎖,然後再執行修改操作。這樣如果同時有兩個或多個事務同時對一個事務申請了共享鎖,在修改數據的時候,這些 事務都要將共享鎖升級爲獨佔鎖。這時,這些事務都不會釋放共享鎖而是一直等待對方釋放,這樣就造成了死鎖。如果一個數據在修改前直接申請修改鎖,在數據修 改的時候再升級爲獨佔鎖,就可以避免死鎖。修改鎖與共享鎖是兼容的,也就是說一個資源用共享鎖鎖定後,允許再用修改鎖鎖定。
3)獨佔鎖 獨佔鎖是爲修改數據而保留的。它所鎖定的資源,其他事務不能讀取也不能修改。獨佔鎖不能和其他鎖兼容。
4)結構鎖 結構鎖分爲結構修改鎖(Sch-M)和結構穩定鎖(Sch-S)。執行表定義語言操作時,SQL Server採用Sch-M鎖,編譯查詢時,SQL Server採用Sch-S鎖。
5)意向鎖 意 向鎖說明SQL Server有在資源的低層獲得共享鎖或獨佔鎖的意向。例如,表級的共享意向鎖說明事務意圖將獨佔鎖釋放到表中的頁或者行。意向鎖又可以分爲共享意向鎖、 獨佔意向鎖和共享式獨佔意向鎖。共享意向鎖說明事務意圖在共享意向鎖所鎖定的低層資源上放置共享鎖來讀取數據。獨佔意向鎖說明事務意圖在共享意向鎖所鎖定 的低層資源上放置獨佔鎖來修改數據。共享式獨佔鎖說明事務允許其他事務使用共享鎖來讀取頂層資源,並意圖在該資源低層上放置獨佔鎖。
6)批量修改鎖 批量複製數據時使用批量修改鎖。可以通過表的TabLock提示或者使用系統存儲過程sp_tableoption的“table lock on bulk load”選項設定批量修改鎖。
10
下列不屬於java語言魯棒性特點的是
正確答案: B 你的答案: A (錯誤)
Ajava能檢查程序在編譯和運行時的錯誤
Bjava能運行虛擬機實現跨平臺
Cjava自己操縱內存減少了內存出錯的可能性
Djava還實現了真數組,避免了覆蓋數據的可能
解析:魯棒性越高,說明你的程序越健壯,越穩定,可以承載的壓力越大。是程序性能的一種度量標準。
根據對性能的不同定義,可分爲穩定魯棒性和性能魯棒性。跨平臺不是。
11.
continue語句可以出現在各種循環體中
錯誤,放在switch中不行。
12
一堆硬幣,一個機器人,如果是反的就翻正,如果是正的就拋擲一次,無窮多次後,求正反的比例。
正:1.本來就是正,概率0.5,下一次還爲正的概率0.5*0.5=0.25
2.本來是反,概率0.5,下一次被翻過來
所以總的爲0.75
所以3:1
13
卡特蘭數通項爲:c(2n, n)/(n+1)。
可用於找有多少種出棧序列。
一景區需要門票5元,售票員沒有零錢,假設這一天會來2N個人,其中N個人會給5元錢,N個人給10元,問所有人都不需要等待的概率是多少?
可以將5元看作入棧,10元看作出棧。求有多少不同序列。
1、不考慮人物排列滿足卡特蘭數 h(N)=h(0)*h(N-1)+h(1)*h(N-2)+...+h(N-1)h(0)=(2N)! / (N+1)!N!
2、加入人物排列得到不需要找零錢的排列方法總數爲和 h(N)*N!*N!
3、2N個人總排列方法總數爲(2N)!
4、概率爲和h(N) / (2N)!=1 / (N+1)
14
求 n 個數中的最大值和最小值,最少的比較次數是?
設計一個分治算法,設min和max是A[0:n]的最小最大值,則對於A[0:n+1]
if A[n+1]>max max=A[n+1]
elseif A[n+1]<min min=A[n+1]
理想情況下,不會進入第二個else去比較,那麼總共比較n-1次
15
下面函數將返回?
1 2 3 4 5 6 7 8 9 |
public static int func (){ try{ return 1; }catch (Exception e){ return 2; }finally{ return 3; } } |
記住:無論如何finally語句都要執行就會這個題了
finally語句在try或catch中的return語句執行之後返回之前執行且finally裏的修改語句不能影響try或catch中 return已經確定的返回值,若finally裏也有return語句則覆蓋try或catch中的return語句直接返回。(同學們可以踊躍探討哦)
答案爲3
16
拷貝構造函數的特點是()
正確答案: B D 你的答案: B C D (錯誤)
該函數名同類名,也是一種構造函數,該函數返回自身引用
該函數只有一個參數,是對某個對象的引用
每個類都必須有一個拷貝初始化構造函數,如果類中沒有說明拷貝構造函數,則編譯器系統會自動生成一個缺省拷貝構造函數,作爲該類的保護成員
拷貝初始化構造函數的作用是將一個已知對象的數據成員值拷貝給正在創建的另一個同類的對象
解析:c中,不需要爲保護成員,要是爲保護成員別人怎麼用?
17
下列關於虛函數的說法正確的是()
正確答案: C D 你的答案: A B C (錯誤)
在構造函數中調用類自己的虛函數,虛函數的動態綁定機制還會生效
在析構函數中調用類自己的虛函數,虛函數的動態綁定機制還會生效
靜態函數不可以是虛函數
虛函數可以聲明爲inline
解析:由於類的構造次序是由基類到派生類,所以在構造函數中調用虛函數,這個虛函數不會呈現出多態; 相反,類的析構是從派生類到基類,當調用繼承層次中某一層次的類的析構函數時往往意味着其派生類部分已經析構掉,所以也不會呈現出多態D虛函數聲明爲inline但是在編譯時會被忽略。
1:只有類的成員函數才能說明爲虛函數;
2:靜態成員函數不能是虛函數;
3:內聯函數不能爲虛函數;
4:構造函數不能是虛函數;
5:析構函數可以是虛函數,而且通常聲明爲虛函數。
18
假定指針變量p定義爲“int *p=new int(100);”,要釋放p所指向的動態內存,應使用語句( )
正確答案: A 你的答案: D (錯誤)
delete p;
delete *p;
delete &p;
delete []p;
解析:int* p = new int (100) 是創建一個int型的內存,並賦值爲100;
int *p = new int[100] 是創建100個int型的內存;
一般用法是new一個數組的話一般是delete [] 其他的直接delete即可。
但是其實對於內置數據類型,其實是delete[] 和delete都可以的。
19
一棵有124個葉節點的完全二叉樹,最多有( )個節點。
正確答案: B 你的答案: A (錯誤)
247
248
249
250
n0 = n2 + 1,於是度爲2的結點個數123個
完全二叉樹中度爲1結點個數最多1個
因此該完全二叉樹中結點最多有123 + 1 + 124 = 248個
20
操作系統採用分頁式存儲管理(PAGING)方法,要求( )
正確答案: B 你的答案: A (錯誤)
每個進程擁有一張頁表,且進程的頁表駐留在內存中
每個進程擁有一張頁表,但只要執行進程的頁表駐留在內存中,其他進程的頁表不必駐留在內存中
所有進程共享一張頁表,以節約有限的內存空間,但頁表必須駐留在內存中
所有進程共享一張頁表,只有頁表中當前使用的頁面必須駐留在內存中,以最大限度地節約有限的內存空間
21
五對夫婦甲,乙,丙,丁,戊舉行家庭聚會 每一個人都可能和其他人握手, 但夫婦之間絕對不握手. 聚會結束時, 甲先生問其他人: 各握了幾次手? 得到的答案是: 0,1,2,3,4,5,6,7,8. 試問: 甲太太握了 幾次手?
甲太太握了四次手。
首先,分析題目
每一個人都可能和其他人握手, 但夫婦之間絕對不握手。
可得出每個人最多握八次手(除自己和親愛的)
甲先生問各握了幾次手時得到的回答是:
0,1,2,3,4,5,6,7,8
解析如下:
1.回答握了8次的說明TA除了自己親愛的以外和每個人都握手了。所以TA和回答握手次數爲0的那個人是一家人。
2.因爲8君和除了0君外的人都握手了,所以1君的那一次握手肯定是和8君。7君握了七次手,沒和0君、1君握,因爲每人最多握8次手且0君是8君的愛人,則可得出7君和1君是一家人。
3.因爲8君和除了0君外的人都握手了,7君和除0君、1君外的人都握手了,所以2君的兩次握手應該分別是和7君、8君。6君握了6次手,沒和0君、1君、2君握手,因爲每人最多握8次手且0君是8君的愛人、1君是7君的愛人,所以2君和6君是一家人。
4.因爲8君和除了0君外的人都握手了,7君和除0君、1君外的人都握手了,6君和除0君、1君、2君外的人都握手了,所以3君的三次握手應該分別是和6君、7君、8君握的。5君握了5次手,沒和0君、1君、2君、3君握,因爲每人最多握8次手且0君是8君的愛人、1君是7君的愛人、2君是6君的愛人,所以3君和5君是一家人。
5.由上可得,4君即爲甲太太,也就是說甲太太握了4次手.
那甲太太分別是和誰握的呢?
當然是5、6、7、8君啦~