一份C++實習生的筆試題目
一、基礎知識1、 下面幾個是在程式設計領域裡經常使用的縮寫,請寫出他們的英文全寫,並翻譯成中文。注意是程式設計領域.(1) OS operating system 作業系統或者是open source 開發原始碼(2) VSVisual Studio軟體開發平臺(3) MS Microsoft 微軟的縮寫,或者Management System管理系統(4) CScryptographic system密碼系統 或者 computer science 電腦科學的縮寫(5) RTOSReal-time operating system 實時作業系統(6) SDKSoftware Development Kit, 即軟體開發工具包
2、 下列幾個C語言表示式是否正確?如果正確,寫出它們表達的意思:(1) a&b 正確 位運算,將a的每一個與b的每一個位進行&操作(2) a&(&b) 正確 &b先取得b的地址,再與b的地址按位與(3) a&&b 正確 邏輯與,就是將a的值與b的值進行與運算(4) a**b 正確 *b先取得b地址的值,
3、 在程式設計風格中,一般都要強調使用匈牙利命名法,下面是匈牙利命名法中一些公認的字首,並給出變數名的例子,請寫出它們所代表的變數型別:字首 變數名 描述字首的意義g_ g_Lock 全量變數m_ m_Num 成員變數p pTrack 指標hhModule 控制代碼sz szText 字串dw dwMsg 雙字4、標頭檔案中ifndef / define / endif 是做什麼用的?
答:防止該標頭檔案被重複引用。
14. #i nclude<file.h> 與 #i nclude "file.h"的區別?
答:前者是從Standard Library的路徑尋找和引用
5、程式碼裡有時可以看到extern “C”, 這語句是做什麼用的?
答:extern "C"是連線申明(linkage declaration),被extern "C"修飾的變數和函式是按照C語言方式編譯和連線的
6、軟體開發中說的check out, check in是什麼意思?
答:原始碼管理系統的簽入,簽出
就是在比較大的專案中,為了避免不同的人編輯相同的程式碼,導致程式碼覆蓋等錯誤,設計了樹形的結點,將一份較大的程式碼,分成很多tcl(小的部分),每個人改動程式碼時,將要改動的程式碼check out 這時別人就不能對程式碼改動,你改完了,再check in 回到結點上,別人才可以 check out 進行修改,這樣在大型的軟體開發中避免了程式碼的覆蓋寫衝突等問題7、C語言函式前面加static,和C++類的成員函式前面加static,兩者的意義有何區別?
答:C的static是限制函式的為編譯單元內部使用,C++類的static使函式成為類成員,而不是例項成員。
基本差不多,但C++類中的有不同之處。就是可以直接用類名去呼叫函式,不用例項化物件。如: 類名.xxx();
8、簡單描述一下WIN32上 .c / .cpp / .rc / .obj / .res / .lib / .dll / .exe這幾個字尾所表示的檔案型別,以及他們之間的相互生成關係。如果你是LINUX程式設計師,前面這個問題答不上,那麼請描述一下GCC編譯的幾個步驟和中間生成檔案。
答:.c: C程式碼.cpp: C++程式碼.obj:目的碼(由.c或.cpp編譯後產生).rc:資原始檔.res:編譯後的十進位制資源(由.rc編譯後產生).exe:可執行程式.dll:動態連結庫他們由.obj連結生成。
二、簡單程式碼1、char* GetMemory(void){ char p[] = “Welcome to AMOI”; return p;}void main(void){ char* str = NULL; str = GetMemory(); printf(str);}執行main函式的結果如何?你覺得該段程式碼是否存在什麼問題?
答:結果是亂碼。
char *p = “Welcome to AMOI”;就沒有問題了!因為return p只是返回了陣列的首地址,雖然在語法上面沒有錯,可以通過這個陣列的首地址來得到裡面的值,但是得到的資訊是錯誤,因為只是得到了這個首地址裡面的值,沒有得到整個陣列的值,如果返回的是指標型別的地址,則可以得到整個陣列的值!因為GetMemory返回的是指向“棧記憶體”的指標,該指標的地址不是 NULL,但其原現的內容已經被清除,新內容不可知。
我也來說說,對以第一個程式:是錯誤的原因在於:char* GetMemory(void) { char p[] = “Welcome to AMOI”; return p; }這裡使用的p是一個區域性變數,程式完成後就將回收其存在棧中的空間,所以返回引用不能使用改進:char* GetMemory(char *ptr) { ptr = "Welcome to AMOI"; return ptr; }
驗證是正確的!
有的人這樣改:
char* GetMemory(void){//char p[] = “Welcome to AMOI”;char *p = “Welcome to AMOI”;return p;}哥們,對於第一題 你這種改發也是錯的。因為GetMemory內的“Welcome to AMOI”是常量字串,它在程式生命期內恆定不變。無論什麼時候呼叫GetMemory,它返回的始終是同一個“只讀”的記憶體塊。
總之你不能返回函式中的區域性指標變數,除非你讓這個區域性指標變數 = 你呼叫函式之前就存在的指標(並且這個指標不是個空指標)。
2、void GetMemory(char** p, int len){ *p = (char*)malloc(len);}void main(void){ char* str; GetMemory(&str, 100); strcpy(str, “Hello World”); printf(str);}執行main函式的結果如何?你覺得該段程式碼是否存在什麼問題?
答:能夠輸出"hello world!"
記憶體洩露
這裡,我們使用了堆來分配空間,但是分配率空間後,我們沒有主動地將分配的空間清空,同時對於傳入的空間的檢測也沒有到位(這些前面的兄弟都說過了)改進:void GetMemory(char** p, int len) { if (len <= 0) { printf("說明性的語句"); *p = NULL; } *p = (char *)malloc(len*sizeof(型別)) if (*p == NULL) { printf("說明性語句"); exit(1); }}然後是主程式中最後新增free(str);ok!http://topic.csdn.net/u/20090211/16/773219a4-bb84-4702-8669-28fef466af62.html
相關推薦
一份C++實習生的筆試題目
一、基礎知識1、 下面幾個是在程式設計領域裡經常使用的縮寫,請寫出他們的英文全寫,並翻譯成中文。注意是程式設計領域.(1) OS operating system 作業系統或者是open source 開發原始碼(2) VSVisual Studio軟體開發平臺(3) MS Microsoft 微軟的縮
C語言天才!想法奇異?還是逼格滿滿?一份C語言寫的傳奇簡歷
san fda 風格 代碼 spa justify 分享 mil ali C語言天才!想法奇異?還是逼格滿滿?一份國外C語言寫的傳奇簡歷作者用代碼更新了自己的簡歷,是不是很接地氣,特符合程序員的逼格。這是一份可讀可執行的語言源文件,也是作者編碼風格的體現。C語言源碼(看不懂
經典C語言筆試題目
來源:https://blog.csdn.net/qq_36032963/article/details/64479469題目來源:1、中興、華為、慧通、英華達、微軟亞洲技術中心等中外企業面試題目;2、C 語言面試寶典(林銳《高質量程式設計第三版》)。說明:1、部分C 語言面
轉載一份C++執行緒池的程式碼,非常實用
基本上是拿來就用了,對WIN32 API不熟,但對執行緒池的邏輯還是比較熟的,認為這個執行緒池寫得很清晰,我拿來用在一個多執行緒下載的模組中。很實用的東東。 呼叫方法 void threadfunc(void *p) { YourClass* your
一份C++執行緒池的程式碼,非常實用
#ifndef _ThreadPool_H_ #define _ThreadPool_H_ #pragma warning(disable: 4530) #pragma warning(disable: 4786) #include <cassert> #in
100 條經典C語言筆試題目(轉)
本文轉自:https://blog.csdn.net/yanghonker/article/details/40118615100 條經典C語言筆試題目題目來源:1、中興、華為、慧通、英華達、微軟亞洲技術中心等中外企業面試題目;2、C 語言面試寶典(林銳《高質量程式設計第三版
【面試專題】騰訊PHP實習生筆試題目及答案解析
騰訊筆試題:const的含義及實現機制分析: const的含義及實現機制,比如:const int i,是怎麼做到i只可讀的? const用來說明所定義的變數是隻讀的。 這些在編譯期間完成,編譯器可能使用常數直接替換掉對此變數的引用。 初探編譯器
C++實習生筆試及HR面試總結
一、筆試 1.int i=10,j=10,k=3;k*=i+j;則k的值等於多少(k=60) 2.int a=1,b=2;則(++a/b)*b--等於多少(2) 二、HR面試 1.自我介紹(沒想到有自我介紹,感到意外,有點小激動) 2.職業規劃 3.對公司的瞭解 4.說說自己的缺點 5.最近一段時間
一份IT實習生的總結
今天突然發現在不知不覺中自己已經實習了 3 個月了,現在可能不算是真正意義上的實習吧,因為現在自己才大三,在這邊擼程式碼的同時還要考慮到學校的功課跟期末考試。讓我震驚的是,我完全想不到在這 3 個月裡我到底學到了什麼,這是一件多麼悲催的事情啊。同時我對我應該 get 到什麼
2013年微軟實習生招聘筆試題目(c/c++你懂多少?)
今天本是清明放假,但是,但是微軟就是在今天下午組織了筆試考試,據說是全國統考。75分鐘,20 道選擇題,問題是,問題是神馬?先看下簡單的評分: 1-8 3 2 -2 0 9-18 5 3 -3 0 19-20 13 7 -7
經典C++筆試題目100例,接近實際,值得一看!
第一部分:C++與C語言的差異(1-18)1、C 和 C++ 中 struct 有什麼區別? Protection行為 能否定義函式 C 無 否,但可以有函式指標 C++ 有 可以,預設是private 2、C++中的
故人的一份連連看程式碼,c語言版本
花一天時間寫的一個連連看,唉!分支限界有的關鍵點,還是不是掌握的很清楚,居然搞那麼長時間,應該 在3個小時之內輕鬆拿下的,加油了 // MyLinkup.cpp : Defines the entry point for the console application. // #in
程式設計C 實驗五 題目五 一維動態陣列的應用(0293)
Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 13295 Accepte
程式設計C 實驗四 題目一 排序查詢(0616)
用選擇法對N個學生的成績按從大到小的順序排序,N個學生的成績整數用scanf 輸入,輸入的成績在[0,100]之間。排序完成後,輸入一個成績,要求用逐個比較查詢的方式找出該成績是該組中第幾個元素的值(即第幾名)。如果該成績不在陣列中,則輸出“no this score!”。 要求: 1、把排序演算法
程式設計C 實驗二 題目一 計算員工周工資(0077)
編寫一個程式,輸入某僱員的每週工作時間(以小時計)和每小時的工資數,計算並輸出他的工資。(如果時間小於0或大於一週的總時間輸出input is wrong!)若僱員周工作小時超過40 小時,則超過部分按原工資的1.5 倍的加班工資來計算, 若僱員每週工作小時超過
2018年12月位元組跳動實習生校招筆試題目
2018年12月位元組跳動實習生校招筆試題目總結 這次筆試只有三道題目,先要求寫出解題思路,然後再寫出程式碼 筆試時間為:1個半小時 1.給出一個年月日,判斷該天是當年的第幾天 水題 注意判斷leap year,(year%4==0 &&
C++ 虛擬函式 筆試題目--綠盟科技
求下面程式的輸出值: class A{ public: A() {func(0);}; virtual void func(int data) {printf("A1 :%d\n",data);} virtual void func(int data) const {
經典C++筆試題目--100(程式設計練習(比C要難)(91-100))
#include <iostream.h> //定義在標頭檔案"RecurveList.h"中 class List; class ListNode { //連結串列結點類 friend class List; private: int data; //結點資料 List
簡單題目練習一,題解(C++版)
題目連結 題解 坑 不存在的 題解 hdu-2011 多項式求和 題意很明確,公式已經給出了 注意: - 正負交替,這裡使用flag *= -1;的方法 - 在進行運算的時候,如果使用的是int型別,如需
C/C++基礎筆試(一)
面試時總會遇到一些基礎題目,其實也是大部分以往見過或者網上可以搜尋到的,都是十分基礎的問題,這類問題答對了不會給自己加多少分;但如果答錯或者答得不完整,自己在面試官眼裡就是基礎不牢固的印象。所以好記性不如爛筆頭,將遇到的部分筆試題,重新整理答案在部落格。