日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实习生招聘笔试

發布時間:2024/7/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实习生招聘笔试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、計算表達式x6+4x4+2x3+x+1最少需要做()次乘法

A、3?????????????????B、4????????????????? C、5?????????????????????? D、6

第一次乘法:x^2,第二次乘法:x^4=x^2 * x^2,第三次乘法:原式=x^2 * (x^4+4x^2+2x)+x+1,每一項的系數可以使用加法來實現。。

2、給定3個int類型的正整數x,y,z,對如下4組表達式判斷正確的選項()

Int a1=x+y-z; int b1=x*y/z;

Int a2=x-z+y; int b2=x/z*y;

Int c1=x<<y>>z; int d1=x&y|z;

Int c2=x>>z<<y; int d2=x|z&y;

A、a1一定等于a2

B、b1一定定于b2

C、c1一定等于c2

D、d1一定等于d2

3、程序的完整編譯過程分為是:預處理,編譯,匯編等,如下關于編譯階段的編譯優化的說法中不正確的是()

A、死代碼刪除指的是編譯過程直接拋棄掉被注釋的代碼;

B、函數內聯可以避免函數調用中壓棧和退棧的開銷

C、For循環的循環控制變量通常很適合調度到寄存器訪問

D、強度削弱是指執行時間較短的指令等價的替代執行時間較長的指令

4、 如下關于進程的描述不正確的是()

A、進程在退出時會自動關閉自己打開的所有文件

B、進程在退出時會自動關閉自己打開的網絡鏈接

C、進程在退出時會自動銷毀自己創建的所有線程

D、進程在退出時會自動銷毀自己打開的共享內存

5、 在如下8*6的矩陣中,請計算從A移動到B一共有多少種走法?要求每次只能向上或著向右移動一格,并且不能經過P;


A、492

B、494

C、496

D、498

6、SQL語言中刪除一個表的指令是()

A、DROP TABLE

B、DELETE TABLE

C、DESTROY TABLE

D、REMOVE TABLE

7、某產品團隊由美術組、產品組、client程序組和server程序組4個小組構成,每次構建一套完整的版本時,需要各個組發布如下資源。美術組想客戶端提供圖像資源(需要10分鐘),產品組向client組合server提供文字內容資源(同時進行,10分鐘),server和client源代碼放置在不同工作站上,其完整編譯時間均為10分鐘切編譯過程不依賴于任何資源,client程序(不包含任何資源)在編譯完畢后還需要完成對程序的統一加密過程(10分鐘)。可以請問,從要完成一次版本構建(client與server的版本代碼與資源齊備),至少需要多少時間()

A、60分鐘

B、40分鐘

C、30分鐘

D、20分鐘

8、如下關于編譯鏈接的說法錯誤的是()

A、編譯優化會使得編譯速度變慢

B、預編譯頭文件可以優化程序的性能

C、靜態鏈接會使得可執行文件偏大

D、動態鏈接庫會使進程啟動速度偏慢

9如下關于鏈接的說法錯誤的是()

A、一個靜態庫中不能包含兩個同名全局函數的定義

B、一個動態庫中不能包含兩個同名全局函數的定義

C、如果兩個靜態庫都包含一個同名全局函數,他們不能同時被鏈接

D、如果兩個動態庫都包含一個同名全局函數,他們不能同時被鏈接

10、排序算法的穩定是指,關鍵碼相同的記錄排序前后相對位置不發生改變,下面哪種排序算法是不穩定的()

A插入排序

B冒泡排序

C快速排序

D歸并排序

11、下列說法中錯誤的是:()

A插入排序某些情況下復雜度為On

B、排序二叉樹元素查找的復雜度可能為On

C、對于有序列表的排序最快的是快速排序

D在有序列表中通過二分查找的復雜度一定是On log2n

12、在程序設計中,要對兩個16K×16K的多精度浮點數二維數組進行矩陣求和時,行優先讀取和列優先讀取的區別是()

A沒區別

B行優先快

C、列優先快

D、2種讀取方式速度為隨機值,無法判斷

13、字符串www.qq.com所有非空子串(兩個子串如果內容相同則只算一個)個數是()

A1024

B1018

C、55

D、50

14、TCP的關閉過程,說法正確的是()

ATIME_WAIT狀態稱為MSLMaximum Segment Lifetime)等待狀態

B、對一個established狀態的TCP連接,在調用shutdown函數之前調用close接口,可以讓主動調用的一方進入半關閉狀態

C、主動發送FIN消息的連接端,收到對方回應ack之前不能發只能收,在收到對方回復ack之后不能發也不能收,進入CLOSING狀態

D在已經成功建立連接的TCP連接上,如果一端收到RST消息可以讓TCP的連潔端繞過半關閉狀態并允許丟失數據。

15、操作系統的一些特別端口要為特定的服務做預留,必須要root權限才能打開的端口描述正確的是()

A、端口號在64512-65535之間的端口

B所有小于1024的每個端口

CRFC標準文檔中已經聲明特定服務的相關端口,例如http服務的80端口,8080端口等

D所有端口都可以不受權限限制打開

16、圖書館有6人排隊,其中3人要還同一本書,書名為《面試寶典》,另外3人要借。問求能保證另外3人借到的種類。
Catalan數 C(2n , n)/( n+1 )?? C(6,3)/4 = 5
5*3!*3! = 180

17、ack(3 , 3)的執行結果是多少?

int ack(int m,int n) {if(m == 0)return n + 1;else if(n == 0)return ack(m-1,1);elsereturn ack(m - 1 , ack(m , n-1)); }

這個題目可以找規律的。。

18、如下SQL語句是需要列出一個論壇版面第一頁(每頁顯示20個)的帖子(post)標題(title),并按照發布(create_time)降序排列:

SELECT title FROM post( )create_time DESC( )0,20????order by? limit

19、為了某項目需要,我們準備構造了一種面向對象的腳本語言,例如,對所有的整數,我們都通過Integer類型的對象來描述。在計算“1+2”時,這里的“1”“2”和結果“3”分別為一個Integer對象。為了降低設計復雜度,我們決定讓Integer對象都是只讀對象,也即在計算a=a+b后,對象a引用的是一個新的對象,而非改a所指對象的值。考慮到性能問題,我們又引入兩種優化方案:(1)對于數值相等的Integer對象,我們不會重復創建。例如,計算“1+1”,這里兩個“1”的引用的是同一個對象——這種設計模式叫做();(2)腳本語言解析器啟動時,默認創建數值范圍[1,32]32Integer對象。現在,假設我們要計算表達式“1+2+3+…+40”,在計算過程需要創建的Integer對象個數是()。

享元模式 ?40。1到7以及他們的和是不用創建的,從8開始,28(是1到7的和)+8=36,36需要創建,36+9=45,45需要創建…依次類推,在加數是32之前(含32)需要創建的對象是32-8+1=25,某數+32=某數之后33至40所表示的加數也要創建,這樣有8個加數 + 8個和,共有16個數需要創建,注意,加數中包含36,這個我們已經創建了,所以有25+8+8-1=40個數的對象需要創建。

20、甲、乙兩個人在玩猜數字游戲,甲隨機寫了一個數字,在[1,100]區間之內,將這個數字寫在了一張紙上,然后乙來猜。
如果乙猜的數字偏小的話,甲會提示:“數字偏小”
一旦乙猜的數字偏大的話,甲以后就再也不會提示了,只會回答“猜對 或 猜錯”
問: 乙至少猜??? 多少次? 猜可以準確猜出這個數字,在這種策略下,? 乙猜的第一個數字是多少???

答案:猜測序列是14,、27、39、50、60、69、77、84、90、95、99
因為無論第幾次猜大了,最終的總次數總是14。???? 這個題目類似于一道Google面試題?:??扔玻璃球求最高樓層。。

一道關于動態規劃的面試題——Google面試題:扔玻璃珠
某幢大樓有100層。你手里有兩顆一模一樣的玻璃珠。當你拿著玻璃珠在某一層往下扔的時候,一定會有兩個結果,玻璃珠碎了或者沒碎。這幢大樓有個臨界樓層。低于它的樓層,往下扔玻璃珠,玻璃珠不會碎,等于或高于它的樓層,扔下玻璃珠,玻璃珠一定會碎。玻璃珠碎了就不能再扔。現在讓你設計一種方式,使得在該方式下,最壞的情況扔的次數比其他任何方式最壞的次數都少。也就是設計一種最有效的方式。
首先,為了保存下一顆玻璃珠自己玩,就采用最笨的辦法吧:從第一層開始試,每次增加一層,當哪一層扔下玻璃珠后碎掉了,也就知道了。不過最壞的情況扔的次數可能為100。
當然,為了這一顆玻璃珠代價也高了點,還是采取另外一種辦法吧。隨便挑一層,假如為N層,扔下去后,如果碎了,那就只能從第一層開始試了,最壞的情況可能為N。假如沒碎,就一次增加一層繼續扔吧,這時最壞的情況為100-N。也就是說,采用這種辦法,最壞的情況為max{N, 100-N+1}。之所以要加一,是因為第一次是從第N層開始扔。
不過還是覺得不夠好,運氣好的話,挑到的N可能剛好是臨界樓層,運氣不好的話,要扔的次數還是很多。不過回過頭看看第二種方式,有沒有什么發現。假如沒摔的話,不如不要一次增加一層繼續扔吧,而是采取另外一種方式:把問題轉換為100-N,在這里面找臨界樓層,這樣不就把問題轉換成用遞歸的方式來解決嗎?看下面:
假如結果都保存在F[101]這個數組里面,那么:
F[N]=100-N,
F[100]=min(max(1,1+F[N-1]),max(2,1+F[N-2]),……,max(N-1,1+F[1]));
看出來了沒有,其實最終就是利用動態規劃來解決這個問題。
下面是自己隨便寫的C++代碼:

#include<iostream> using namespace std;int dp[101] = { 0 };void solve() {int i , j , k;for(i = 2 ; i < 101 ; ++i){dp[i] = i;for(j = 1 ; j < i ; ++j){k = (j>=(1 + dp[i-j])) ? j : (1 + dp[i-j]);if(dp[i] > k)dp[i] = k;}} }int main(void) {dp[0] = 0 , dp[1] = 1;solve();printf("%d\n",dp[100]);return 0; } 輸出結果為14。也就是說,最好的方式只要試14次就能夠得出結果了。
答案是先從14樓開始拋第一次;如果沒碎,再從27樓拋第二次;如果還沒碎,再從39樓拋第三次;如果還沒碎,再從50樓拋第四次;如此,每次間隔的樓層少一層。這樣,任何一次拋棋子碎時,都能確保最多拋14次可以找出臨界樓層。
證明如下:
1、第一次拋棋子的樓層:最優的選擇必然是間隔最大的樓層。比如,第一次如果在m層拋下棋子,以后再拋棋子時兩次樓層的間隔必然不大于m層(大家可以自己用反證法簡單證明)
2、從第二次拋棋子的間隔樓層最優的選擇必然比第一次間隔少一層,第三次的樓層間隔比第二次間隔少一層,如此,以后每次拋棋子樓層間隔比上一次間隔少一層。(大家不妨自己證明一下)
3、所以,設n是第一次拋棋子的最佳樓層,則n即為滿足下列不等式的最小自然數:
? 不等式如下:? 1+2+3+...+(n-1)+n? >=?? 100
由上式可得出n=14
最優的策略是先從第14層拋下,最多拋14次肯定能找出臨界樓層。


21、給定一個數組a[N],我們希望構造數組b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i]。在構造過程:
不允許使用除法;
要求O(1)空間復雜度和O(n)時間復雜度;
除遍歷計數器與a[N] b[N]外,不可使用新的變量(包括棧臨時變量、對空間和全局靜態變量等);
請用程序實現并簡單描述。

/* 思路:進行3趟掃描 第一趟從左到右對A進行累乘,結果保存在B數組中,b[i] = b[i-1]*a[i-1]; 第二趟從右到左對A進行累乘,結果寫入A中,a[i]=a[i+1]*a[i]; 第三趟從左到右,然后B數組對應位置的元素等于其前一個位置的元素與A中其后一個位置的元素的乘積。b[i] = a[i+1] * b[i-1] */ void makeArray(int a[],int b[],int len) {int i;b[0] = 1;for(i = 1 ; i < len ; ++i)b[i] = b[i-1] * a[i-1]; // b[0] = 1 , b[i] = a[0]*a[1]*...*a[i-1]a[len - 1] = a[len - 1]^a[len - 2]; //不使用中間變量,通過位運算來交換兩個變量a[len - 2] = a[len - 1]^a[len - 2];a[len - 1] = a[len - 1]^a[len - 2];for(i = len - 3 ; i >= 0 ; --i){a[len - 1] = a[i + 1] * a[len - 1];a[i] = a[i]^a[len - 1]; //交換兩個變量a[len - 1] = a[i]^a[len - 1];a[i] = a[i]^a[len - 1];}a[len - 1 ] = 1; //a[len - 1 ] = 1 , a[i] = a[i+1]*a[i+2]*...*a[len-1]for(i = 0 ; i < len ; ++i)b[i] = a[i] * b[i]; }

方法二:

//方法二,保持a數組不變 void makeArray(int a[],int b[],int len) {int i;b[0] = 1;for(i = 1 ; i < len ; ++i){b[0] *= a[i-1];b[i] = b[0]; // b[i] = a[0]*a[1]*...*a[i-1]}b[0] = 1;for(i = len - 2 ; i > 0 ; --i){b[0] *= a[i+1]; // b[0] = a[i+1]*a[i+2]...*a[len-1]b[i] *= b[0]; // b[i] = a[0]*a[1]*...*a[i-1]*a[i+1]*...*a[len-1]}b[0] *= a[1]; }

方法三:

void makeArray(int a[],int b[],int len) {int i;b[0] = 1;for(i = 1 ; i < len ; ++i){b[i] = b[i-1] * a[i-1]; // b[i] = a[0]*a[1]*...*a[i-1]}b[0] = a[len - 1];for(i = len - 2 ; i > 0 ; --i){b[i] *= b[0]; // b[i] = a[0]*a[1]*...*a[i-1]*a[i+1]*...*a[len-1]b[0] *= a[i]; // b[0] = a[i+1]*a[i+2]...*a[len-1]}} 22、 20世紀 60年代,美國心理學家米爾格蘭姆設計了一個連鎖信件實驗。米爾格蘭姆把信隨即發送給住在美國各城市的一部分居民,信中寫有一個波士頓股票經紀人的名字,并要求每名收信人把這封信寄給自己認為是比較接近這名股票經紀人的朋友。這位朋友收到信后再把信寄給他認為更接近這名股票經紀人的朋友。最終,大部分信件都寄到了這名股票經紀人手中,每封信平均經受 6.2詞到達。于是,米爾格蘭姆提出六度分割理論,認為世界上任意兩個人之間建立聯系最多只需要 6個人。

假設QQ號大概有10億個注冊用戶,存儲在一千臺機器上的關系數據庫中,每臺機器存儲一百萬個用戶及其的好友信息,假設用戶的平均好友個數大約為25人左右。

第一問:請你設計一個方案,盡可能快的計算存儲任意兩個QQ號之間是否六度(好友是1度)可達,并得出這兩位用戶六度可達的話,最短是幾度可達。

第二問:我們希望得到平均每個用戶的n度好友個數,以增加對用戶更多的了解,現在如果每臺機器一秒鐘可以返回一千條查詢結果,那么在10天的時間內,利用給出的硬件條件,可以統計出用戶的最多幾度好友個數?如果希望得到更高的平均n度好友個數,可以怎樣改進方案?

23、段頁式虛擬存儲管理方案的特點。
答:空間浪費小、存儲共享容易、存儲保護容易、能動態連接。
?????? 段頁式管理是段式管理和頁式管理結合而成,兼有段式和頁式管理的優點,每一段分成若干頁,再按頁式管理,頁間不要求連續(能動態連接);用分段方法分配管理作業,用分頁方法分配管理內存(空間浪費小)。
?????? 段頁式管理采用二維地址空間,如段號(S)、頁號(P)和頁內單元號(D);系統建兩張表格每一作業一張段表,每一段建立一張頁表,段表指出該段的頁表在內存中的位置;地址變換機構類似頁式機制,只是前面增加一項段號。所以存儲共享容易、存儲保護容易。

轉載請標明出處,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7438986

總結

以上是生活随笔為你收集整理的实习生招聘笔试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。