1撼泛,實現(xiàn)一個Memcpy函數(shù)(C/C++)
從源src所指的內(nèi)存地址的起始位置開始挠说,拷貝n個字節(jié)的數(shù)據(jù)到目標(biāo)dest所指的內(nèi)存地址的起始位置中。
dest和src沒有重疊或者dest在左有部分重疊我們都是用從前往后復(fù)制愿题。如果dest在右并且有部分重疊损俭,我們選用從后往前復(fù)制蛙奖。
2,給定N張撲克牌和一個隨機函數(shù)杆兵,設(shè)計一個洗牌算法雁仲。
3,(智力題)25匹馬琐脏,每個跑道最多能有1匹馬進行比賽攒砖,最少比多少次能比出前3名,前5名骆膝?
4祭衩,100億個整數(shù),內(nèi)存足夠阅签,如何找到中位數(shù)掐暮?內(nèi)存不足如何找到中位數(shù)?
內(nèi)存足夠可以使用類似快速排序的方法政钟;內(nèi)存不足可以采用分桶法路克,例如字節(jié)的首位是0或1,然后縮小范圍养交,直到可以在內(nèi)存中運行精算。
5,請簡述智能指針原理碎连,并實現(xiàn)一個簡單的智能指針灰羽。(C/C++)
6,如何處理循環(huán)引用問題。
垃圾回收中的引用計數(shù)法不能處理循環(huán)引用的問題鱼辙,可以使用標(biāo)記清除的算法從GCroot進行可達性分析廉嚼。
7,單例模式倒戏,要求線程安全
8,如何定義一個只能在堆上(棧上)生成對象的類(C/C++)
9,引用和指針的區(qū)別
本質(zhì):引用是別名怠噪,指針是地址,具體的:
指針可以在運行時改變其所指向的值杜跷,而引用不會傍念,它僅僅是一個別名
在參數(shù)傳遞時,引用會做類型檢查葛闷,而指針不會
引用不能為空憋槐,指針可以為空
10(智力題)1000個燈圍成一個環(huán),初始狀態(tài)是熄滅的淑趾,按下一個燈秦陋,它及它的左右兩盞燈的狀態(tài)會改變,問如何讓所有的燈都亮治笨?
依次按下每一個燈
11驳概,(智力題)n條直線最多能將一個平面分成幾部分赤嚼?
f(n)=n(n+1)/2+1
12,(智力題)n個平面最多能將一個空間切成多少部分
13,n個人顺又,其中只有一個明星更卒,所有人都認識這個明星,這個明星其他人一個都也不認識稚照,如何找到這個明星蹂空?如果n很大很大,如何改進你的算法果录。
線性掃描上枕,兩兩比較,每次都能排除一個人弱恒,如果a認識b那么a就不是明星辨萍,如果a不認識b,那么b就不是明星返弹。
14锈玉,給50個硬幣,面值可以不同义起,排成一排拉背,兩個人輪流取,只能從兩端取默终,先取的人如何保證取到的幣值大于等于另一個人?
如果奇數(shù)位的數(shù)和比較大椅棺,則取第一個硬幣,后面跟著取奇數(shù)位的硬幣齐蔽。如果偶數(shù)位的和比較大土陪,則取最后一個硬幣,后面跟著取偶數(shù)的硬幣肴熏。