Time of Update: 2018-12-04
群碩的筆試在語言方面主要是Java和C++,夾了一道C#題,趁記憶猶新的時候記下來 一、給了一棵二叉樹的前序走訪和中序遍曆,要求寫出後序遍曆。看一下資料結構就行了,很easy。提示:前序走訪的第一個節點為根結點,在中序遍曆中根結點的左邊節點是左子樹,右邊節點是右子樹,如此遞迴。 二、什麼是實體記憶體和虛擬記憶體,OS中為什麼要使用虛擬記憶體?看OS的書。 三、解釋一下C#中的“delegate”。原先不清楚的,然後在技術面試的時候問了一下面試官,原來類似於一個隊列,隊列中存的是函數指標(託管函數
Time of Update: 2018-12-04
1.
Time of Update: 2018-12-04
java裡都是按值傳遞,而c++有按值傳遞,按地址傳遞(指標和引用)#include <iostream>using namespace std;void swapByPoint(int *x,int *y);void swapByRef(int &x,int &y);int main(){ int x=5,y=10; cout<<x<<":"<<y<<endl; swapByPoint(&x,
Time of Update: 2018-12-04
今天學習了單鏈表,並寫出了其的C語言實現,驗證了一下感覺基本正確。但是代碼的健壯性不夠,對於有的不合法的輸入,並沒有顯示輸出錯誤。代碼可以直接貼在編譯器上編譯執行,我已經寫過主函數了。如有錯誤,歡迎指正。#include <stdio.h>#include <malloc.h> typedef struct LNode{ int data; LNode *next;}LNode, *LinkList;LinkList create() /
Time of Update: 2018-12-04
一、運算子的優先順序表C 語言的符號眾多,由這些符號又組合成了各種各樣的運算子。既然是運算子就一定有其特定的優先順序,下表就是C 語言運算子的優先順序表:註:同一優先順序的運算子,運算次序由結合方向所決定。上表不容易記住。其實也用不著死記,用得多,看得多自然就記得了。也有人說不用記這些東西,只要記住乘除法的優先順序比加減法高就行了,別的地方一律加上括弧。這在你自己寫代碼的時候,確實可以,但如果是你去閱讀和理解別人的代碼呢?別人不一定都加上括弧了吧?所以,記住這個表,我個人認為還是很有必要的。二、
Time of Update: 2018-12-04
C語言的優先性和結合方向問題C語言的書籍的附錄都要說一個問題,就是優先性和結合方向。 我的理解是這些是建立在運算式的基礎之上的,寫一個c語言的運算式或者看一個C語言的運算式,先看優先性,在優先性相同的情況下,再根據結合方向,判斷運算式的那個部分先運算,那個後運算。如: 1. a=b=c=0,只有一個=,因此優先性相同,因此看結合方向,結合方向是從右至左,因此,整個表達是從右開始計算,上面等價與a=(b=(c=0)),這是正確地,但是下面這個問題該怎麼解釋哪? 2. a=*p+
Time of Update: 2018-12-04
同事給的幾道題目1.介紹一下STL,詳細說明STL如何?vector。4.指標和引用有什麼分別;如果傳引用比傳指標安全,為什嗎?如果我使用常量指標難道不行嗎?5.參數傳遞有幾種方式;實現多態參數傳遞採用什麼方式,如果沒有使用某種方式原因是什嗎?6.結合一個項目說明你怎樣應用設計模式的理念。7.介紹一下你對設計模式的理解。(這個過程中有很多很細節的問題隨機問的)8.C++和C定義結構的分別是什麼。9.建構函式可否是虛汗數,為什嗎?解構函式呢,可否是純虛的呢?10,拷貝建構函式相關問題,深拷貝,淺拷
Time of Update: 2018-12-04
c#實現斷點續傳 在瞭解HTTP斷點續傳的原理之前,讓我們先來瞭解一下HTTP協議,HTTP協議是一種基於tcp的簡單協議,分為請求和回複兩種。請求協議是由客戶機(瀏覽器)向伺服器(WEB SERVER)提交請求時發送報文的協議。回複協議是由伺服器(web server),向客戶機(瀏覽器)回複報文時的協議。請求和回複協議都由頭和體組成。頭和體之間以一行空行為分隔。 以下是一個請求報文與相應的回複報文的例子:GET /image/index_r4_c1.jpg HTTP/1.1Accept:
Time of Update: 2018-12-04
1.進程和線程的差別。 線程是指進程內的一個執行單元,也是進程內的可調度實體. 與進程的區別: (1)調度:線程作為調度和分配的基本單位,進程作為擁有資源的基本單位 (2)並發性:不僅進程之間可以並發執行,同一個進程的多個線程之間也可並發執行 (3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的資源. (4)系統開銷:在建立或撤消進程時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或撤消線程時的開銷。 2.測試方法
Time of Update: 2018-12-04
一直以來對CLR即時編譯產生的彙編碼抱有很多疑問,很多地方並沒有像微軟聲稱的那樣被最佳化,尤其是並沒有內聯(inline)。曾經猜想那是為了IDE能夠調試而少做了一些最佳化,在不串連調試器的情況下應該能聲稱最優代碼。隨著.NET 3.5 SP1的發布,謎團終於解開了。.NET 2.0的CLR並沒有對含有實值型別(value
Time of Update: 2018-12-04
05年時,在微軟的Rico Mariani做了一次實際應用的C#和C++的效能比較。事情起源於微軟著名的元老Raymond Chen(在下敬仰的超級牛人)用C++寫了一個英漢詞典程式,來描述講解最佳化C++程式的過程。他從一個代碼簡單直觀的版本開始,不斷測試最佳化,直到達到滿意的效能。Rico
Time of Update: 2018-12-04
1.調試標記 適用預先處理#define定義一個或多個調試標記,在代碼中把調試部分使用#ifdef 和#endif 進行管理。當程式最終調試完成後,只需要使用#undef標記,調試代碼就會消失。常用的調試標記為DEBUG, 語句序列:#define DEBUG#ifdef DEBUG調試代碼#endif
Time of Update: 2018-12-04
這裡以電腦VGA 13H視頻模式為例,系統介紹製作電腦遊戲的基本方法。VGA INT
Time of Update: 2018-12-04
本文連結:簡單的C++智能指標 從書上看到了一個C++智能指標的例子,感覺不錯,小改進了下,放出來。 智能指標的大意是:對普通的類(假設C)指標進行封裝,內部維護一個引用計數。程式中只要使用智能指標封裝類(假設SafeC)就行了。用的時候只用new C(), 然後把其給封裝類進行構造,然後就隨便用啦,不用擔心C的析構問題了。
Time of Update: 2018-12-04
C++風格的串流量控制 C++引入了ostringstream、istringstream、stringstream這三個類,要使用他們建立對象就必須包含sstream.h標頭檔。 istringstream類用於執行C++風格的串流的輸入操作。 ostringstream類用於執行C風格的串流的輸出操作。 strstream類同時可以支援C風格的串流的輸入輸出操作。
Time of Update: 2018-12-04
進程函數,所在函數庫為stdlib.h、process.hvoid abort() 此函數通過調用具有出口代碼3的_exit寫一個終止資訊於stderr, 並異常終止程式。無傳回值int exec…裝入和運行其它程式int execl( char *pathname,char *arg0,char *arg1,…,char *argn,NULL)int execle( char *pathname,char *arg0,char *arg1,…,
Time of Update: 2018-12-04
1.//整數轉換成字串itoa函數的實現 #include "stdafx.h" #include using namespace std; void itoaTest(int num,char str[] ) { int sign = num,i = 0,j = 0; char temp[11]; if(sign<0)//判斷是否是一個負數 { num = -num; }; do { temp[i] = num%10+'0'; num/=10; i++;
Time of Update: 2018-12-04
《C++Primer》第四版 2.3.5節中這麼說到:①變數定義:用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有一個定義。②變數聲明:用於向程式表明變數的類型和名字。③定義也是聲明:當定義變數時我們聲明了它的類型和名字。④extern關鍵字:通過使用extern關鍵字聲明變數名而不定義它。 1.定義也是聲明,extern聲明不是定義,即不分配儲存空間。extern告訴編譯器變數在其他地方定義了。例如:extern int i; //聲明,不是定義
Time of Update: 2018-12-04
[轉]關鍵字 mutable的中文意思是:“可變的、易變的”與constant(即C++中 const)是反義詞。C++中的mutable是為了突破const限制而設定的,被mutable修飾的變數將永遠處於可變狀態,即使是位於 const修飾的函數中。mutable又是一個奇怪的修飾符(specifier),它只能夠用於一個類的非待用資料成員。下面我將討論 mutable 的語義和用法,但是首先我要解釋一下 C++
Time of Update: 2018-12-04
記憶體管理----高品質C++ 第7 章 記憶體管理歡迎進入記憶體這片雷區。偉大的Bill Gates 曾經失言:640K ought to be enough for everybody— Bill Gates 1981程式員們經常編寫記憶體管理程式,往往提心弔膽。如果不想觸雷,唯一的解決辦法就是發現所有潛伏的地雷並且排除它們,躲是躲不了的。本章的內容比一般教科書的要深入得多,讀者需細心閱讀,做到真正地通曉記憶體管理。7.1 記憶體配置方式記憶體配置方式有三種:(1)