暴風影音筆試總結

2021-06-18 09:00:59 字數 1714 閱讀 5425

1.溢位和越界有什麼區別?

溢位一般指超出表示或者儲存的範圍,比如資料溢位,用short儲存大於2^16的數會造成溢位,比如申請的記憶體超過可用記憶體大小。

或者字串拷貝超出陣列長度。

越界沒啥好說的,一般是指訪問到了陣列範圍之外的區域。

2.是乙個選擇題,給乙個字串,然後問下面四個選項哪乙個不可能是其入棧和出棧之後的結果。

3.tcp建立連線後,用send函式傳送5次,每次100位元組,問recvfrom要最多多少次,最少多少次。

最多少一次?最多?500次?

4.給乙個字串要求轉換為整數,字串中可能包含+-號,比如 「12345」得到12345

這個題目很蛋疼,正常c的標準輸入輸出中有sscanf函式可以直接從字串中讀取整數,只需要判斷第一位是不是符號就可以了。然是這道題目顯然不是這個意思。

常規的寫法就是乙個迴圈,如果是符號位則記錄並跳過,如果是數字則把已有的結果*10然後加上即: temp =temp*10 + ch-'0';最後把符號加上就好了。

5.給前序遍歷和終須遍歷,要求寫程式得到後序遍歷。

這個題目很有意思,大家都知道怎麼手算得到後續遍歷,但是程式實現呢?顯然最直接方式就是還原二叉樹然後後序遍歷。更簡單的方法就是迭代或者遞迴了。

我用的迭代的方式,用乙個棧來儲存字串,先將中序遍歷入棧。然後對前序遍歷的每個字元,與棧頂比較,若棧頂為長度為1的字串,直接輸出,這是後續的乙個字元了。如果當前先序字元與棧頂相同,則看下乙個前序字元。如果棧頂字串長度不為1,則先出棧,然後用先序字元入棧,再用先序字元將剛出站的字串分成兩個字串,右子樹入棧,左子樹入棧。重複以上步驟直到先序字串遍歷完。然後將棧中剩餘元素輸出即得到後續遍歷字串。**如下:

// 樹的遍歷.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include #include void tree(char* str1, char* str2, char*& str3);

int _tmain(int argc, _tchar* argv)

void tree(char* str1, char* str2, char*& str3)

}} }

while (top>-1)

str3[index]='\0';

}

當然,這個題目貌似用遞迴**會更簡單。

6.這是乙個動態規劃的題目了,給乙個nxn的網格,問從乙個頂點出發,不能往回走,到達對角頂點有多少中走法。

沒啥可說的,動態規劃算去吧。

還有乙個題目是關於sizeof運算子的

void getsize(char str)

int _tmain(int argc, _tchar* argv)

問輸出是多少,這個地方我理解錯誤了,sizeof是編譯時確定的!而不是執行時確定的,所以除了某個類例項之外,其他情況都是對變數型別的位元組數的確定。

sizeof("hello.") 和題目中的值會不一樣,因為字串常量在編譯時確定,而sizeof(str)實際上就是陣列指標的位元組數,這個題目的答案應該是4,4

今天看了一下阿里的面試題,其中聞到

hash_map和map的區別,以及實現方式。

區別就是乙個存的是雜湊之後的鍵和值,儲存和訪問等都是線性的。

而map是有序儲存鍵值對,插入和刪除都會改變內部結構。

hash_map是基於hash_table實現的,而map是基於紅黑樹實現的。

暴風影音2014筆試演算法題彙總

1.自定義實現字串轉為整數的演算法,例如把 123456 轉成整數123456.輸入中可能存在符號,和數字 返回結果的有效標誌 enum status int gstatus valid int strtoint const char str while digit 0 digit 非法輸入 els...

2023年9月16日 暴風影音筆試題

1 根據二叉樹的前序遍歷和中序遍歷退出二叉樹的布局並畫出二叉樹,寫出此樹的後序遍歷以及後序遍歷程式 2 將旋轉90度 3 找出兩個字串中最長的公共字串 如 abcdef 和 yiewcdeacd 則輸出 cde 4 tcp建立的三次握手,並說明為什麼要進行三次握手,並說明第二次連線中斷後會怎樣 5 ...

程式設計例項 禁止暴風影音後台程序

rem exescript options begin rem scripttype console rem destdirectory temp rem icon f 娛樂 電腦 我的圖示 cancel.ico rem outputfile c documents and settings adm...