原创 51、字符流中第一個不重複的字符

題目描述:   請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符“google"時,第一個只出現一次的字符是"l"。 解題

原创 53、刪除鏈表中重複的結點

題目描述:   在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5。 解題思路:   需要三個指針,一個指向前一

原创 41、和爲S的兩個數字

題目描述:   輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 解題思路:   數組是一個遞增排序好的,可以採用雙指針法;可以證明的是,a+b=sum,

原创 39、數組中只出現一次的數字

題目描述:   一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 解題思路:   兩個不相等的元素在位級表示上必定會有一位存在不同;   將數組的所有元素異或得到的結果爲不存在重複的兩個元素

原创 40、和爲S的連續正數序列

題目描述:   小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和爲100(至少包括兩個數)。沒多久,他就得到另一組連續正數和爲10

原创 實習面經

數字天空: 講項目,畫流程圖,討論項目的實現細節 你對後端開發有什麼看法 epoll的底層原理,LT/ET模式的區別和底層原理 你對多線程編程有什麼看法,有哪些注意事項 http協議的get和post有什麼區別 C++11新特性詳解

原创 如何編寫高性能服務端程序

文章目錄一、提高併發能力必須解決的問題1、如何提高併發連接數?2、那麼多的連接數怎麼進行業務處理?3、應用服務器的處理水平又該怎麼提高?(1)代碼中的業務邏輯(2)數據庫的壓力二、高性能服務端編程框架 一、提高併發能力必須解決的問題

原创 手撕代碼之數組

一、二維數組中的查找(leetcode 240) class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) {

原创 手撕代碼之字符串

文章目錄一、反轉字符串中的每一個單詞(leetcode 151、557)二、多個字符串的最長公共前綴(leetcode 14) 一、反轉字符串中的每一個單詞(leetcode 151、557) class Solution { pub

原创 手撕代碼之棧和隊列

文章目錄一、括號匹配(leetcode 20) 一、括號匹配(leetcode 20) class Solution { public: bool isValid(string s) { if (s.empty

原创 TCP和UDP的區別

文章目錄一、TCP和UDP的區別?二、TCP如何保證可靠性?1、校驗和2、序列號3、確認應答機制4、超時重傳三、UDP如何實現可靠傳輸?1、安全性2、0-RTT建立連接3、丟包恢復4、快速重啓會話(支持網絡切換) 一、TCP和UDP的

原创 項目中常見的開放性問題

文章目錄一、對後端開發的看法?二、爲什麼要做靜態http服務器?三、爲什麼要使用ET模式?四、多線程編程的注意事項 一、對後端開發的看法?   提起後端,不免要說到前端,前端主要是負責與用戶直接打交道,更多的是做一些交互,用戶的請求一

原创 手撕代碼之鏈表

文章目錄一、反轉鏈表(leetcode 206)二、兩個鏈表的交點(leetcode 160)三、鏈表的中間結點(leetcode 876)四、判斷鏈表是否存在環(leetcode 141)五、輸出鏈表環的入口結點(leetcode

原创 手撕代碼之二叉樹

文章目錄一、根據排序數組構造二叉搜索樹(leetcode 108)二、根據前序遍歷和中序遍歷構造二叉樹(leetcode 105)三、二叉樹的非遞歸遍歷(leetcode 94、144、145)四、二叉樹中和爲某一值的路徑(leetc

原创 C++11新特性

文章目錄一、關鍵字及新語法二、STL容器三、多線程四、智能指針五、其他特性 一、關鍵字及新語法 列表初始化:int a{10}。 auto:自動類型推導。 nullptr:空指針。 範圍for:for (auto v