一.簡答題算法
1.簡述iso的7層設計數組
解析:安全
2.如何在多個進程間進行數據共享(至少寫出3種)服務器
Linux下:網絡
Windows下:app
|
TCPsocket |
UDP函數 |
是否有序性能 |
接收到的可能亂序,可是有段標號供排序加密 |
無序 |
可靠性 |
可靠的 |
不可靠的 |
是否鏈接 |
面相鏈接 |
面相非鏈接 |
負責 |
維護虛擬鏈接,負載較高 |
無鏈接,負載較小 |
是否確認 |
須要確認(可靠性的一種) |
不須要確認 |
是否有控制 |
滑動窗口和擁塞控制機制 |
無控制 |
二.算法題
1.有一個數據A = [a_1,a_2,a_3.....a_n],n的大小不定,請設計算法將A中的全部數據組合進行輸出
解析:能夠採用遞歸的方式來實現,每次取一個元素,在剩下元素的數組中遞歸,要注意遞歸結束的條件。
2.有這樣一個數組A,大小爲n,相鄰元素差的絕對值都是1,如A={4,5,6,5,6,7,8,9,10,9},如今給定數組A和目標整數t,請找到t在A中的位置。(15分)
解析:
解法一:常規解法:遍歷,時間複雜度O(n)
解法二:快速定位到第一個目標整數,後面繼續遍歷,最好狀況下是O(1),最壞狀況是O(n)
快速定位方法:以A[0]<t爲例:
3.二叉樹的面積等於二叉樹的長乘以二叉樹的寬,二叉樹的寬等於最長節點間的距離,二叉樹的長等於根節點到子節點的最長長度,請設計算法計算二叉樹的面積?
解析:面積 = 長 * 寬 = 樹的深度 * (左子樹的深度 + 右子樹的深度 + 1)
三.算法設計題
百度地圖中存在須要標註的不少點,而且這些點都須要帶描述,現將描述假設爲矩形,而且能夠位於點的左邊或右邊,但點不能移動,若是兩個點間的描述發生覆蓋,則
須要將其中的一個點進行刪除
1.在一個區域內,請設計算法將有效的點進行輸出(儘量多的點)?
2.若是區域足夠大,點足夠多,算法會出現性能的瓶頸,請設計詳細的算法來講明並解決問題?
解析:我的理解
1 關鍵是在怎麼樣解決兩個點之間發生衝突的狀況,在發生衝突時應該如何調整。
2 性能瓶頸應該出如今調整算法上,當發生一次衝突時,可能會引發連帶的反應,形成屢次調整。
解決方案:對點進行分級,每一個點增長權重,按級別進行標記,優先標記權重值較高的點。
參考資料: