原创 c++快排、堆排及歸併排序 簡單易懂的實現

歸併排序 歸併排序實現的原理是分治思想,先自頂向下分(遞歸),分到不能再分之後(每個分組只剩一個元素),再自底向上進行合併(遞歸返回),每次合併是直接在原數組上修改的,但修改之前需要用一個臨時數組來記錄合併過程中得到的有序元素。

原创 快排和歸併排序哪個更快

在看算法圖解的過程中,看到書中說時間複雜度同爲O(nlogn),快排比歸併排序快的原因是快排查找的常量要比歸併小。 看完還不是很理解,去網上查了下資料,看了幾種回答,還是《數據結構與算法分析:C++描述》中說的比較清楚,主要是因爲: 1.

原创 C++貪喫蛇代碼的閱讀筆記(三):Map地圖的繪製

這個類的實現比較簡單,只繪製了一個最簡單的地圖,然後提供一個 PrintInitmap() 函數打印地圖,直接放代碼: 1. 頭文件 #ifndef MAP_H #define MAP_H #include <vector> #inc

原创 C++貪喫蛇代碼的閱讀筆記(二):Startinterface開始動畫的實現

1. 原理解釋 先來看下頭文件中包含哪些東西,包括容器deque、vector,以及之前介紹過的Point類,Point聲明的對象,主要就是負責控制檯上點信息的打印和清除,後面的具體實現部分中也會使用其Print()和Clear()成員函

原创 字節跳動客戶端實習一輪面試

剛面完第一輪,先記一下吧,過幾天二面完再補充。 上來問了下實驗室的項目,隨便介紹了下,就開始正題了。   1. 把牛客網的網址輸入瀏覽器中,接下來的流程是怎樣的? 要進行URL解析獲取IP地址,解析域名要用到DNS協議,DNS查詢需要到D

原创 字節跳動客戶端實習一面面經

很不幸,由於太菜,上次三面完掛了,這次又投了個部門,一面過程如下: 1. 簡單介紹下實驗室項目,對比下NDN和CDN,NDN中網絡交付的時候用的什麼協議 2. HTTPS瞭解嗎? 3. HTTP中的網絡交付過程,打開一個網頁的過程,Web

原创 字節跳動客戶端實習二三面

二面(80min) 1.首先自我介紹沒什麼好說的 2.簡歷上寫的語言是C/C++/Python,先講一下這三種語言的區別吧 其實就是面向過程、面向對象和解釋性語言的區別,由於一面問過面向過程和麪向對象的區別以及各自的應用場景,因此後來專門

原创 C++貪喫蛇代碼的閱讀筆記(一):tools及point

1. system()指令的使用 首先必須包含在頭文件裏: #include <cstdlib> system("title C++");    //設置cmd窗口標題爲C++ system("color 0B");    //設置顏色,

原创 騰訊暑期實習一面面經

騰訊暑期實習一面面經 面的是騰訊音樂部門,全民K歌下面做 linux C++開發的,全程大概45min左右,過程記錄如下: 1. linux 指令有用過嗎? 常用的查看文件指令: cat 、 tac 、more 、less 、

原创 C++快速排序的簡單實現(包含兩種基準值取值方法)

提供了兩種基準值的取值方法: 1. 隨機選取元素作爲基準值 2. 區間的左中右三端三個數,取其中值作爲基準值   代碼如下: #include <iostream> #include <random> #include <vector>

原创 HTTPS相關總結(內有SSL四次握手連接的詳細過程)

HTTPS = HTTP+ 加密 + 認證 + 完整性保護 HTTPS 並非是應用層的一種新協議。 只是 HTTP 通信接口部分用SSL(Secure Socket Layer) 和 TLS(Transport Layer Securit

原创 C++歸併排序簡單易懂的實現

歸併排序實現的原理是分治思想,先自頂向下分(遞歸),分到不能再分之後(每個分組只剩一個元素),再自底向上進行合併(遞歸返回),每次合併是直接在原數組上修改的,但修改之前需要用一個臨時數組來記錄合併過程中得到的有序元素。 時間複雜度:O(n

原创 C++11智能指針shared_ptr的實現思路(內附實現和測試代碼)

由於面試的時候被問到過幾次智能指針,所以閒下來打算從頭理一遍智能指針的實現思路,自己實現一個shared_ptr,也能夠更好地理解智能指針。 智能指針說白了就是用類把指針封裝起來,這樣就不必擔心內存泄漏的問題了,因爲類的對象在出作