最近的一些校招試題摘錄

最近又參加了一些校招,真是馬不停蹄啊。多參加考試是好的,可以不斷發現一些新的問題。下面摘錄一些我不太會的題。

1.volatile的作用是什么?

答案:volatile是類型修飾符,用它修飾的類型變量可能會被編譯器未知的因素更改,比如操作系統、硬件、線程等。遇到這個關鍵字修飾的變量,編譯器對訪問該變量的代碼就不再進行優化,從而可以提供對特殊地址的穩定訪問。

參考文獻:

《C/C++ volatile讓你看的更明白》

《講講C++中的volatile關鍵字》


2.位運算,給定一個整形變量a,寫兩段代碼,第一個設置a的bit 3為1,第二個清除a的bit 3為0,在以上兩操作中要求保持其它位不變。

答案:

#define  BIT3 (0x1<<3)
static int a;
void set_bit3()
{a |= BIT3;
}
void claer_bit3()
{a &= ~BIT3;
}

3.TCP/IP協議中,端口號的作用?

答案:

參考《 TCP/IP協議號和端口 》,《端口號的作用及常見端口號用途說明》

端口號的作用,主要是區分服務類別和在同一時間進行多個會話。

舉例來說,有主機A需要對外提供FTP和WWW兩種服務,如果沒有端口號存在的 話,這兩種服務是無法區分的。實際上,當網絡上某主機B需要訪問A的FTP服務時,就要指定目的端口號為21;當需要訪問A的WWW服務時,則需要將目的 端口號設為80,這時A根據B訪問的端口號,就可以區分B的兩種不同請求。這就是端口號區分服務類別的作用。
再舉個例子:主機A需要同時下載網絡上某FTP服務器B上的兩個文件,那么A需要 與B同時建立兩個會話,而這兩個傳輸會話就是靠源端口號來區分的。在這種情況下如果沒有源端口號的概念,那么A就無法區分B傳回的數據究竟是屬于哪個會話,屬于哪個文件。而實際上的通信過程是,A使用本機的1025號端口請求B的21號端口上的文件1,同時又使用1026號端口請求文件2。對于返回的數 據,發現是傳回給1025號端口的,就認為是屬于文件1;傳回給1026號端口的,則認為是屬于文件2。這就是端口號區分多個會話的作用。
TCP 21端口:FTP 文件傳輸服務
UDP 53端口:DNS 域名解析服務
TCP 80端口:HTTP 超文本傳輸服務
TCP 443端口:HTTPS 加密的超文本傳輸服務

4.當我們在瀏覽器中鍵入“facebook.com”時,然后瀏覽器就顯示百度主頁,請問在這個過程中,發生了什么?

答案:?

參考《百度面試題:從輸入url到顯示網頁,后臺發生了什么?》

基本步驟:1).在瀏覽器中鍵入域名 ? 2).瀏覽器通過DNS查找域名的IP地址 ? 3).瀏覽器給web服務器發送一個HTTP請求 ?4).?facebook服務的301永久重定向響應?

5).?瀏覽器跟蹤重定向地址 6).?服務器“處理”請求 ? 7).服務器發回一個HTML響應 ?8).瀏覽器開始顯示HTML?


5. 如下:

#include <iostream>
using namespace std;
int main()
{unsigned short a = 10;printf("%u\n", ~a);printf("%d\n", ~a);unsigned char b = 125;printf("%d", b);return 0;
}
請問輸出結果是___________________

答案:

? ? ? ? ? ? ? ? ? ?4294967285
? ? ? ? ? ? ? ? ? ? -11
? ? ? ? ? ? ? ? ? ?125
解析:short的字節數是2,也就是16位,當a=10時,二進制表示:0000 0000 0000 1010,~a若是表示為%u,即unsigned int ,由于

它的字節數是4,所以共32位。所以先將a補成32位,即0000 0000 0000 0000 0000 0000 0000 1010,然后取反,~a即表示為:1111 1111 1111 1111 1111 1111 1111 ?0101

由于是unsigned,所以首位是1,不表示符號位,直接計算就知道:2^31+2^30+.......+2^4+2^2+1=4294967285.

但是如果是%d呢?則首位表示符號位,代表是負數,將其表示為10進制,方法是:1.二進制減1,然后取反,得:0000 0000 0000 0000 0000 0000 0000 1011,所以應該是-11

而char同理,直接轉為int,由于unsigned char為1個字節,表示范圍:0——255,125在其中,所以直接轉為int,仍然是125。

那么:如果上題附加:

#include <iostream>
using namespace std;int main()
{unsigned char b = 259;printf("%d\n", b);unsigned char i = -1;int p = (int)i;printf("p=%d\n", p);char j = -1;int q = (int)j;printf("q=%d\n",q);return 0;
}
答案:

? ? ? ? ? ? ? ? ? ? ? ? ??3

? ? ? ? ? ? ? ? ? ? ? p=255
? ? ? ? ? ? ? ? ? ? ? ? q=-1
.解析:

1)、首先259轉為二進制,即為:1 0000 0011,然后由于unsigned char為1個字節,8位,故要截去最前面的1,剩下的就是0000 0011,即為3.或者也可以從另外一個角度來看:unsigened char的范圍是0-255,259大于255,所以溢出,反向循環過去,為259-255-1=3 .(PS:256-0,257-1,258-2,259-3)。


2)、-1的二進制表示為1111 1111(取8位),由于-1賦給unsigned char,所以首位不是符號位,因此轉化為十進制,前面補0:00000000 00000000 00000000 11111111,即為255,或者unsigned char的范圍:0-255,因此-1溢出,變為255.


3)、-1的二進制表示為1111 1111(取8位),由于-1賦給char,所以首位是符號位,因此轉化為十進制,前面補1:11111111 11111111 11111111 11111111,即為-1,或者char的范圍:-128-127,因此-1沒有溢出,因此還是-1.


6. ?寄存器變量的作用?

答:當對一個變量頻繁被讀寫時,需要反復訪問內存,從而花費大量的存取時間。為此,C語言提供了一種變量,即寄存器變量。這種變量存放在CPU的寄存器中,使用時,不需要訪問內存,而直接從寄存器中讀寫,從而提高效率。寄存器變量的說明符是register。對于循環次數較多的循環控制變量及循環體內反復使用的變量均可定義為寄存器變量,而循環計數是應用寄存器變量的最好候選者。 

參考:《 c語言性能優化—使用寄存器變量》  《靜態變量和寄存器變量》

7.

有3個文件,A,B,C,其中A定義了一個全局變量,B,C都包含了A這個頭文件,問是否可行?

若改為其中A定義了一個靜態全局變量,B,C都包含了A這個頭文件,問又是否可行?

答案:第一個可行,第二個不可行。可以參考《靜態變量和寄存器變量》。主要原因是第一個默認全局變量的作用域是整個源程序。 當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 而第二個靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259133.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259133.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259133.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

yii2中的rules驗證規則

2019獨角獸企業重金招聘Python工程師標準>>> Rules驗證規則&#xff1a;required : 必須值驗證屬性||CRequiredValidator 的別名, 確保了特性不為空.[[字段名],required,requiredValue>必填值,message>提示信息];email : 郵箱驗證||CEmailValidator 的別名,確…

weblogic數據源配置的問題,weblogic密碼破解

weblogic 報錯 please increase XXX,得知是連接池出了問題&#xff0c;查看weblogic配置&#xff0c;發現沒有設置超時 查看oracle 當前session&#xff0c;可以看到連接的機器&#xff0c;用戶&#xff0c;當前執行的sqlid select * from v$session; select v$sql where sql_i…

自己寫的簡易多任務系統---基于pic18fxxx

這個工程只是實現了最簡單的OS任務調度&#xff0c;對于理解任務調度有點幫助。其實就是從UC/OS-II里面摘出來的&#xff0c;沒有原來的那么復雜&#xff0c;很精簡&#xff0c;但道理上是一樣的。工程中的CPU.C文件時直接拿Nathan Brown寫好的&#xff0c;因為關于PIC任務切換…

python語言整數類型-Python 的內置數值類型

Python 是一種敏捷的、動態類型化的、極富表現力的開源編程語言&#xff0c;可以被自由地安裝到多種平臺上。Python 代碼是被解釋的。如果您對編輯、構建和執行循環較為熟悉&#xff0c;則 Python 代碼對您來說更簡單。但是&#xff0c;請不要搞錯&#xff1a;Python 器可以是簡…

滴滴出行2016校招編程題

1. 給定一個m*n的數組&#xff08;m,n>2,數組值>0&#xff09;&#xff0c;要求選出和最大的子2*2數組。例如&#xff1a; 1 2 3 4 5 6 7 8 9 顯然和最大的2*2子數組是5 6;8 9.下面完成這個功能。 Input: &#xff08;m*n的數組&#xff09; 1 2 3 ; 4 5 6 ; 7 8 9 …

每天一個linux命令(22):find 命令的參數詳解

find一些常用參數的一些常用實例和一些具體用法和注意事項。 1&#xff0e;使用name選項&#xff1a; 文件名選項是find命令最常用的選項&#xff0c;要么單獨使用該選項&#xff0c;要么和其他選項一起使用。 可以使用某種文件名模式來匹配文件&#xff0c;記住要用引號將文件…

(WPF) DataGrid之綁定

通過ObservableCollection 綁定到 DataGrid. 1. 前臺Xaml. <DataGrid x:Name"dgMeasurements"HorizontalAlignment"Left"Margin"10,69,0,10"ItemsSource"{Binding}"AutoGenerateColumns"False"Width"370">…

程序=數據結構+算法

這句名言&#xff0c;我現在品來很有感覺&#xff0c;看看uc/os-II里面那些就緒表、查找最高優先級任務等等&#xff0c;算法設計的非常巧妙&#xff0c;整個OS都是圍繞著OS_TCB來運轉的&#xff0c;任務需要通信&#xff0c;那就在建立個OS_EVENT&#xff0c;通過.*OSTCBEvent…

去哪筆試兩題

1&#xff0c;a是一個有序數組&#xff0c;但經過向右移動數位&#xff0c;現在預在a中查找元素key的位置&#xff0c;如不存在&#xff0c;返回0。例如a[5,6.7.8,1,2,3,4]. 實現&#xff1a; 1 #quna12 def findPos(a,key):3 mina[0];4 for i in range(len(a)):5 …

MySQL5.6主從復制搭建基于日志(binlog)

什么是MySQL主從復制 簡單來說&#xff0c;就是保證主SQL&#xff08;Master&#xff09;和從SQL&#xff08;Slave&#xff09;的數據是一致性的&#xff0c;向Master插入數據后&#xff0c;Slave會自動從Master把修改的數據同步過來&#xff08;有一定的延遲&#xff09;&…

opengl 如何加陰影_動漫嘴唇厚涂如何繪制?厚涂嘴唇正確畫法

動漫嘴唇厚涂如何繪制&#xff1f;厚涂嘴唇正確畫法&#xff01;嘴巴怎么畫&#xff1f;畫嘴巴真的很考驗一個畫師功力&#xff0c;好看的嘴巴生動而豐滿&#xff0c;可以給整幅畫作添上亮點&#xff0c;而畫的不好的嘴巴呢&#xff0c;就容易把畫面整體的風格打破。那么零基礎…

位運算

我們復習一下位運算&#xff0c;這里介紹一下(& ,|, ^)的用途。 按位與 ------------& 規則&#xff1a; 0&00 0&10 1&0 0 1&11 &#xff08; 兩位為1&#xff0c;才是1&#xff09;作用&#xff1a; 清零與保位。通常用來將特定的位清零&…

詳解JMeter函數和變量

詳解JMeter函數和變量&#xff08;1&#xff09; JMeter函數可以被認為是某種特殊的變量&#xff0c;它們可以被采樣器或者其他測試元件所引用。函數調用的語法如下&#xff1a; ${__functionName(var1,var2,var3)} 其中&#xff0c;__functionName匹配被調用的函數名稱。用圓括…

信號反射

突然想起來前幾天調試CAN通訊的時候出現的BUG&#xff0c;那就是傳說中的“信號反射”&#xff0c;也有稱“振鈴”的。錯誤剛出現的時候沒有意識過來&#xff0c;還說怎么出現重復出現這么多條消息呢&#xff1f;光在書本上看到過這個概念&#xff0c;沒有“實物”與之對應起來…

hdu 5199 map或二分或哈希

題目描述&#xff1a;給出n棵樹的高度&#xff0c;每棵樹上都站著一只鳥&#xff0c;槍手Jack站在最左邊那棵樹的左邊對鳥進行射擊&#xff0c;當Jack在高度為H的地方向右發射一顆子彈的時候&#xff0c;高度為H的樹上的鳥兒就會掉落&#xff08;注&#xff1a;其他樹上的鳥兒不…

數字電路實驗怎么接線視頻講解_家庭影院中音箱、功放、投影機、4K播放機不知道怎么連接?手把手教你...

家庭影院中音箱、功放、投影機、4K播放機不知道怎么連接&#xff1f;手把手教你有不少用戶收到從家庭影院器材之后&#xff0c;表示完全不會連接。翻看說明書也覺得頭大&#xff0c;知識太多&#xff0c;然而卻很難找到要點。今天主要跟大家講講如何連接音箱、功放、投影機和影…

.NET開發過程中的全文索引使用技巧之Solr

前言&#xff1a;相信許多人都聽說過.net開發過程中基于Lucene.net實現的全文索引&#xff0c;而Solr是一個高性能&#xff0c;基于Lucene的全文搜索服務器。同時對其進行了擴展&#xff0c;提供了比Lucene更為豐富的查詢語言&#xff0c;同時實現了可配置、可擴展并對查詢性能…

關于字符的讀入與輸出

在筆試中&#xff0c;經常見到字符的讀入與輸出的題目。逆序打印輸入時最常見、最基本的考題&#xff0c;復雜點的就是統計單詞、逆序打印單詞之類的。難點是如何判斷輸入的結束&#xff0c;如果用getchar函數&#xff0c;其輸入結束符為EOF&#xff08;其打印值為-1&#xff0…

修正discuz發帖首次換行無效的問題

找遍了百度和google都沒有解決方案&#xff0c;連discuz官方都沒有出來解決&#xff0c;至今其官網仍有這個問題。 那就自己動手解決吧&#xff0c;順手打個補丁。雖然走了小路&#xff0c;但是能解決問題。 解決方案&#xff1a;修改static/js/bbcode.js 找到 html2bbcode()方…

auto.js停止所有線程_Java線程與并發編程實踐:深入理解volatile和final變量

同步有兩種屬性&#xff1a;互斥性和可見性。synchronized關鍵字與兩者都有關系。Java同時也提供了一種更弱的、僅僅包含可見性的同步形式&#xff0c;并且只以volatile關鍵字關聯。假設你自己設計了一個停止線程的機制(因為無法使用Thread不安全的stop()方法))。清單1中Thread…