第一題,基礎題:
1. 資料庫及執行緒產生死鎖的原理和必要條件,如何避免死鎖。
2. 列舉物件導向程式設計的三個要素和五項基本原則。
解答:
封裝,繼承,多型
物件導向的五大基本原則單一職責原則(srp)
開放封閉原則(ocp)
黎克特制替換原則(lsp)
依賴倒置原則(dip)
介面隔離原則(isp)
單一職責原則(srp)
3.windows記憶體管理的方式有哪些?各自的優缺點。
第二題,演算法與程式設計:
1.公司舉行羽毛球比賽,採用淘汰賽,有1001個人參加,要決出「羽毛球最高選手」,應如何組織這次比賽?可以使用偽**。
解答:堆排序或者競標賽排序。
2.有100盞燈泡,第一輪點亮所有電燈,第二輪每兩盞燈熄滅一盞,即熄滅第2盞,第4盞,以此類推,第三輪改變編號為3的倍數的電燈,第3盞,第6盞,如果原來那盞燈是亮的,就熄滅它,如果原來是滅的,就點亮它,以此類推,直到第100輪。問第100結束後,還有多少盞燈泡是亮的?
解答:完全平方數。
3.有20個有序陣列,每個陣列有500個uint變數,降序排序。要求從這10000個元素中選出最大的500個。
解答:可能是多路歸併排序思想,用到了堆,使用了優先佇列資料結構
[cpp]view plain
copy
print?
#include
#include
#include
#include
using
namespace std;
#define rows 20
#define cols 500
int data[rows][cols];
void createdata()
} for( int i=0; isort(data[i],data[i]+cols, greater()); //對每一行降序排列
} struct node
};
void outmindata( int k)
priority_queuequeue( arr, arr+rows ); //使用優先佇列,預設是大堆
for( int i=0; i//演算法核心就是這個迴圈
} int main()
#include #include #include #include using namespace std;
#define rows 20
#define cols 500
int data[rows][cols];
void createdata()
struct node
};void outmindata( int k)
} char *pszstringrotate(char *pszstring, int ncharsrotate)
int main()
#include using namespace std;
void reversestring( char* pbegin, char* pend )
}char *pszstringrotate(char *pszstring, int ncharsrotate)
int main(){
char str = "abcdefg";
char *s = pszstringrotate( str, 3 );
if( s )
cout << s 《第三題,系統設計題:
手機數字鍵上有拼音字母,乙個數字串對應著多個字母序列,如2--abc,6--mno,9--wxyz,則926對應著wan,yan,是漢字「萬」、「豔」的拼音等。要求設計乙個系統,輸入是聯絡人列表userlist,漢字字母對映dict,數字串numstr,輸出滿足下列條件的聯絡人列表resultlist:
(1)輸入乙個數字串,輸出與其部分連續匹配的所有手機號,如,輸入926,輸出13926118288
(2)輸入乙個數字串,輸出與其部分連續匹配的所有聯絡人姓名拼音,如輸入926,輸出「李萬」,「李豔」等
解答:
1,字典樹
2,雜湊表
2.2的解答:
這道題讓人一看覺著非常有趣,但又讓人感覺很複雜,其實這道題,只要弄清三點,問題就迎刃而解了。
1.對於每盞燈,拉動的次數是奇數時,燈就是亮著的,拉動的次數是偶數時,燈就是關著的。
2.每盞燈拉動的次數與它的編號所含約數的個數有關,它的編號有幾個約數,這盞燈就被拉動幾次。
3.1——100這100個數中有哪幾個數,約數的個數是奇數。我們知道乙個數的約數都是成對出現的,只有完全平方數約數的個數才是奇數個。
所以這100盞燈中有10盞燈是亮著的。
它們的編號分別是: 1、4、9、16、25、36、49、64、81、100。
2017百度校園招聘程式設計題
題目大概為輸入n個敏感詞彙和乙個文字串,在文字串中出現敏感詞彙的地方用 替代掉,輸出替換後的文字串。思路 直接kmp匹配出現敏感詞的地方,用乙個中間陣列標記。唯一的陷阱就是不區分大小寫,所以用kmp判斷兩個字元相等的注意下 替換敏感詞彙 include include include include...
2008百度校園招聘題一道
題目大意如下 一排n 最大 個正整數 1遞增,亂序排列,第乙個不是最小的,把它換成 1,最小數為 且未知求第乙個被 1替換掉的數原來的值,並分析演算法複雜度。解題思路 一般稍微有點演算法知識的人想想就會很容易給出以下解法 設 sn a a 1 a 2 a n 1 na n n 1 2 掃一次陣列即可...
百度2015校園招聘筆試題
一 簡答題 30分 1.程序和執行緒的聯絡與區別。2.簡述資料庫的儲存過程及其優點。3.static全域性變數與普通的全域性變數有什麼區別?static區域性變數和普通的區別?static函式和普通函式的區別?二 演算法與程式設計題 45分 1 請編碼實現memcpy函式 void memcpy v...