与0xf2值相等的是python_腾讯笔试题涵盖的基础知识
1.下列減少內(nèi)存碎片的方法有哪些是正確的?
增加實際申請和釋放的次數(shù)
頻繁調(diào)用的子函數(shù)盡量使用棧內(nèi)存
系統(tǒng)申請一大塊內(nèi)存,自己實現(xiàn)內(nèi)存分配和釋放,定時清理內(nèi)存
降低虛擬內(nèi)存的大小
解答:
答案2,3是正確的。屬于操作系統(tǒng)中內(nèi)存管理的問題。
C/C++中的malloc/free是從堆中動態(tài)申請和釋放內(nèi)存的,是非常耗時的;
棧內(nèi)存速度比堆內(nèi)存快,因為棧結(jié)構(gòu)簡單,只需要彈出或者入棧就可以移動指針了,而在堆中,需要查找空閑內(nèi)存,申請內(nèi)存等操作,所以比較慢;
分配一大塊內(nèi)存池,然后自己進(jìn)行管理,有經(jīng)驗的程序員是可以做到的。比如在nginx中,它就首先分配了很多的內(nèi)存,然后再重寫malloc/free進(jìn)行自主管理的。在android中的Fresco中,使用native方法管理Ashmem,極大的減少了GC的調(diào)用(與GC后碎片的產(chǎn)生);在通信設(shè)備中,由于設(shè)備老舊,開發(fā)者甚至需要用匯編去壓榨malloc的性能。
關(guān)于虛擬內(nèi)存,肯定是越多越好啊,升級64位最顯著的優(yōu)勢就是可以使用64EB的內(nèi)存,這里不要把虛擬內(nèi)存腦補(bǔ)為swap分區(qū)。
考點:Stack與Heap的區(qū)別:
stackheap
分配
編譯后就已經(jīng)固定下來
手動向內(nèi)核申請
釋放
運(yùn)行后自動pop釋放
手動釋放/使用ARC(iOS)/使用GC(Java),這里注意內(nèi)存泄露
性能
faster
slower
適用場景
基本類型,函數(shù)
大的數(shù)值,動態(tài)數(shù)組,對象
更多對比 -> 點我或者看視頻學(xué)習(xí)
考點:虛擬內(nèi)存(Virtual memory)
在32位Unix下,進(jìn)程啟動后,可以獲取到4GB的虛擬內(nèi)存,其中內(nèi)核占用1G,用戶占用3G,虛擬內(nèi)存是通過物理內(nèi)存(physical memory)與交換空間(swap)進(jìn)行分配的,它對于進(jìn)程是透明的,系統(tǒng)通過地址轉(zhuǎn)換功能(比如MMU,內(nèi)存管理單元)進(jìn)行虛擬內(nèi)存與實際內(nèi)存的轉(zhuǎn)換。
virtual-memory
以下為進(jìn)程中內(nèi)存的分配管理
Virtual Memory Management
Data is the portion(一部分) of variables and data that are non-zero on startup.
BSS (Block Started by Symbol) are the ones that are zero on startup.
什么是內(nèi)存碎片?
內(nèi)部碎片: 線程占用內(nèi)存而不利用或者釋放的內(nèi)存空間。
外部碎片: 內(nèi)存空間太小以至于無法分配的內(nèi)存空間。
2.給定一個數(shù)組a[M],其中M為常量值,下列哪幾個表達(dá)式可求出數(shù)組a的長度大小?
sizeof(a);
sizeof(a)/size(*a);
sizeof(a[0]);
sizeof(a)/sizeof(a[0]);
解答:
我的答案是2,4。考的是指針類型。
int* 與 int[M]的類型是不同的,但是可以強(qiáng)制類型轉(zhuǎn)換;
sizeof是編譯器運(yùn)算的,而不是運(yùn)行時計算出來的;
總結(jié)如下
&aa*a
type
int *
int [M]
int
size
8(on 64bitOS)
M * 4
4
3.以下哪些是HTTP協(xié)議里面定義的URL組成部分:
schema
path
port
host
query-string
解答:
這道題答案是除第一個以外。考的是實際中對網(wǎng)絡(luò)編程的理解。
URL實際上就是是對資源的一種描述:
://:/[||]
scheme 指協(xié)議類型,常見的協(xié)議類型有market,http,content,media,file,當(dāng)然協(xié)議類型也可以自定義,比如簡書中使用的就是 jianshu作為默認(rèn)URL的。
比如HTTP-GET的例子:
http://www.blackswift.com:8080/api/v2/getimagelist?limit=10
很顯然,這個HTTP例子中除了HTTP本身已經(jīng)有了,其它所有的組成都有體現(xiàn)。
4.關(guān)于主鍵和唯一索引以下哪些說法是正確的?
唯一索引可以有多個
唯一索引所在的列不允許空值
唯一性所在的列并不是表的主鍵列
一個表必須有主鍵列
解答:
答案1,3,4是對的。
主鍵唯一索引
個數(shù)
有且只有一個
0,1,多個
Allow NULL
x
√
與對方的關(guān)系
充分不必要
必要不充分
5.已知人臉檢測器的檢出率(人臉圖被檢測為人臉的概率)為90%,誤檢率(非人臉被檢測為人臉的概率)為1%. 請問當(dāng)一張被人臉檢測器識別為人臉時,該圖為人臉圖的概率是多少?若給定一個圖片集中,其中20%的圖片為人臉圖,80%的圖為非人臉圖,當(dāng)該集合中的某一張圖被人臉檢測器檢測為人臉時,該圖為人臉的概率又是多少?
1. 無法確定, 45/47
2. 90/91, 45/47
3. 無法確定,90/91
4. 90/91,90/91
解答:
選擇1;
第一問,
A = P(圖片是人臉);
B = P(機(jī)器檢測出人臉);
P(B|A) = 90%;
P(B|~A) = 1%;
P(B) = P(B|A)xP(A) + P(B|~A)* P(~A) = 0.9A + 0.01(1-A);
根據(jù)貝葉斯公示:
P(A|B) = P(B|A) * P(A)/P(B)
= 0.9 * P(A)/(0.89A + 0.01)
A為止,所以無法確定。
第二問,
P(A) = 0.2,代入完成。
6.MongoDB采用了一下哪種分布式方式?
1. Single-Master
2. p2p
3. Master-Slave
4. Replica Sets
解答:
解答我放棄了...英文資料都很少,只知道這個技術(shù)在LeanCloud上引發(fā)過一次事故,但是新技術(shù)還是值得推廣。
MongoDB屬于NOSQL(Not Only SQL)數(shù)據(jù)庫,是一種開源的分布式,基于k-v,基于文本(比如磁盤/RAM)的數(shù)據(jù)庫。
7.iOS開發(fā)中,非ARC下這段代碼執(zhí)行的結(jié)果是什么?
//類似于Java,用注解定義接口
@interface OCObject : NSObject
-(void)printDescription;
@end
//接口的實現(xiàn)
@implementation OCObject
-(void)printDescription{
NSLog(@"OCObject printDescription!");
}
@end
//手動分配內(nèi)存,alloc并init
OCObject *obj = [[OCObject alloc]init];
//執(zhí)行方法,`performSelector`類似于Java中的反射,也是在運(yùn)行時找的。
[obj performSelector:@selector(printDescription) withObject:nil afterDelay:60];
[obj release];
1. 不會打出任何消息
2. 會輸出OCObject printDescription!
3. 會crash
4. 編譯不通過
解答:
答案是2
ARC是 Automatic Reference Counting,即自動引用計數(shù)器,在iOS開發(fā)中,蘋果不希望開發(fā)者控制內(nèi)存,所以使用ARC幫助開發(fā)者在編譯的時候自動加上內(nèi)存回收的代碼。
以下為測試結(jié)果:
Xcode6.3/ARC on/iOS8.3下,編譯不通過,要求刪除release,刪除后編譯通過,輸出Log;
Xcode6.3/ARC off/iOS8.3下,編譯通過,輸出Log。
如果有懂得iOS開發(fā)的就留言解釋一下吧,我畢竟是寫Java的。
8.以下對C++(C++98標(biāo)準(zhǔn))語言描述中正確的是
1. C++提供了對全局對象初始化順序控制的機(jī)制
2. C++沒有提供固定大小的整型
3. C++支持多維數(shù)組
4. C++支持類類型的成員常量
解答:
答案是1 3 4
全局對象如果有依賴的話,就需要對初始化順序進(jìn)行控制,C++已經(jīng)有了這個機(jī)制;
C++中有int8_t,int16_t,int32_t, 甚至int64_t,所以是有固定大小的整型;
多維數(shù)組肯定支持,連C語言都支持;
類類型的成員常量是支持的,用const修飾。
9.Java中BufferedInputStream,DataInputStream等IO類是哪種設(shè)計模式的典型應(yīng)用?
1. Adapter
2. Decorator
3. Factory
4. Observer
解答:
網(wǎng)上的答案是1 2。
Adapter:是適配器模式,數(shù)據(jù)源 -> Adaper -> 另一個數(shù)據(jù)格式,常見的有充電器,ListView這樣的設(shè)計。Stream是對輸入/輸出的抽象,為使用者提供一個統(tǒng)一的接口,使用者使用這個接口而不必關(guān)心它的實現(xiàn)。在Java I/O中提writer與stream的轉(zhuǎn)換。
Decorator:是裝飾模式,通過給對象進(jìn)行裝飾封裝而不改變結(jié)構(gòu),達(dá)到實現(xiàn)更多功能的作用。比如File,Data等Stream都是裝飾出來的。還有常見的外包項目,不想重構(gòu)的話就裝飾一下吧。
Factory:工廠模式,在構(gòu)造函數(shù)中使用,stream中沒有使用。
Oberser:觀察者模式,通過發(fā)布-更新進(jìn)行數(shù)據(jù)處理,比如RxJava,Otto。
更多設(shè)計模式可以看 ——> 這里
10.請問下列代碼,當(dāng)x =0x7c和x=0f2時,運(yùn)行結(jié)果分別是什么?
int main(){
char x = 0xF2;
int nConut = 0;
//這里的x 就是 x!= 0x00;
for (; x; x>>=1) {
++nConut;
}
printf("nCount = %d ",nConut);
}
解答:
答案分別是7,死循環(huán)。
第一個是簡單二進(jìn)制操作題目,用于判斷它有多少位。至于第二個,是負(fù)數(shù)。
0x00 ~ 0x7f0x80 ~ 0xff
char
0 ~ 127
-128 ~ -1
負(fù)數(shù)右移是補(bǔ)1,最后就是0xffffffff了
11110010
11111001
11111100
11111110
11111111
由于-1始終不為0,所以會死循環(huán)。
無符號右移(unsigned right shift)在iOS中是沒有的,在Java中是有的。
看到 char,第一步要想到寫防衛(wèi)代碼
11.下列方法得到的NSString對象與眾不同的是:
NSString *str = @"Hello";
NSString *str2 = [NSString stringWithFormat:@"%s","Hello"];
NSString *str3 = [NSString stringWithFormat:@"%s","Hello"];
NSString *str4 = [[NSString alloc]initWithString:@"Hello"];
解答:
答案是第四個,它調(diào)用了malloc,是在堆中(運(yùn)行時)申請的,需要手動釋放(如果沒有用arc的話),而其它幾個是編譯時(棧中)就已經(jīng)固定在_DATA段了。
12.在一個路由表中,假設(shè)有下面三條路由:192.168.128.0/24, 192,168.130.0/24, 192.168.132.0/24,如果進(jìn)行路由匯聚,能覆蓋這三條路由的地址是:
192.168.128.0/21
192.168.128.0/22
192.168.130.0/22
192.168.130.0/23
解答:
答案是第一個。
1100 0000.1010 1000.1000 0000.0000 0000
1100 0000.1010 1000.1000 0010.0000 0000
1100 0000.1010 1000.1000 0100.0000 0000
可以看出,公共節(jié)點在21位。
13.程序運(yùn)行的結(jié)果是?
#include
struct A
{
unsigned char x;
unsigned char y;
int z;
};
int main(){
struct A a;
a.x = 10;
a.y = 20;
a.z = 30;
*((int*)&a) = 0x010101ff;
printf("%d,%d,%d,%d",sizeof(a),a.x,a.y,a.z);
return 0;
}
解答:
8,255,1,30
本題有2個重點:
結(jié)構(gòu)體對齊
指針類型轉(zhuǎn)換
在結(jié)構(gòu)體對齊中,我們要知道,為了提高內(nèi)存讀取效率,需要把結(jié)構(gòu)體中的成員按照2^n(Power-of-two)來進(jìn)行對齊(align)的,對齊準(zhǔn)則是
MIN(Max(DateType),#pragma pack(n));
意思就是找出結(jié)構(gòu)體中占用空間最大的數(shù)據(jù)類型,并以它為基本對齊。如果使用#pragma pack(n)手動指定對齊的話,就取它們兩個的最小值。在OSX(LP64)中,根據(jù)官方的文檔,對齊標(biāo)準(zhǔn)是這樣的。
DateTypeILP32sizeILP32alignmentLP64sizeLP64alignment
char
1
1
1
1
short
2
2
2
2
int
4
4
4
4
long
4
4
8
8
pointer
4
4
8
8
size_t
4
4
8
8
long long
8
4
8
8
fpost_t
8
4
8
8
off_t
8
4
8
8
回到題目,我們可以看出,結(jié)構(gòu)體是按照Int,也就是4byte來對齊的
valuexy填充0z
address
0x00
0x01
...
0x44~0x47
所以sizeof為 (4+4) = 8.
接下來,是指針問題,我們先翻譯這句話
*((int*)&a) = 0x010101ff;
它實際上就是取a的地址,然后把a(bǔ)到(a+4)byte中的內(nèi)容換成0x010101ff。偽代碼如下,注意這里與大小端無關(guān),變量是放在棧上的
a.x = (0x010101ff)&0xff;//替換低位值
a.y = (0x010101ff>>2)&0xff;
a,z不受影響啦
也就是這樣
address0x000x01...0x44~0x47
value
0xff
0x01
填充0
還是30不變
這下你明白了吧,如果我們再進(jìn)一步修改
*((long*)&a) = 0x01ffff01ff;
輸出結(jié)果就是 8,255,1,1
在64中,除了long與pointer是八位的,其它的差別不大。
14.在SQL語句中,與X BETWWEN 20 AND 30 等價的表達(dá)式是:__?
解答;
20<= x <= 30,是包括邊界的,最多可以取出11個數(shù)。
15.在iOS開發(fā)中,需要實踐一個簡單的http協(xié)議通訊,可用的工具/組件有?
BSD Socket API
CFSocket
NSStrem
NSSURLConnection
解答:
答案是NSSTream 與 NSSURLConnection。
前面兩個Socket是屬于傳輸層的,面向底層網(wǎng)絡(luò)連接,要是自己重寫一個HTTP那還不得累死。在Android中,有URLConnnection,OkHttp,Volley等組件。
有興趣的可以看下我寫的OkHttp源碼分析
說個題外話,如果使用第三方庫的話,建議加個適配器,以免以后升級改動麻煩
16.下列關(guān)于棧的說法哪些是正確的?
1. 棧是后進(jìn)先出的
2. 通常棧空間大小在編譯時指定,并在程序運(yùn)行時由操作系統(tǒng)管理(分配,釋放等)
3. 所有定義在函數(shù)內(nèi)部的變量都是從棧上分配內(nèi)存
4. 棧的使用效率比堆高
5. 棧內(nèi)存具有讀,寫屬性
解答:除了3是錯的,別的都是對的。注意函數(shù)內(nèi)部的malloc。
17.忘了,題目考了TCP的握手
18.以下js代碼的運(yùn)行結(jié)果是?
function Parent(){
this.sayHi = function(){
alert("hi Parent");
}
}
function Child(){
Parent.apply(this);
this.sayHi = function(){
alert("hi Child");
}
}
var p = new Parent();
var c = new Child();
var p = c;
p.sayHi();
解答:
答案是hi Child, Java引用基礎(chǔ)題。另外還有靜態(tài)-構(gòu)造函數(shù)-繼承優(yōu)先級這樣的問題,自己查詢。
19.以下哪些是前端的構(gòu)建工具?
Grunt
Gulp
Nodejs
Angularjs
BootStrap
解答:這個回答看運(yùn)氣了....日新月異的前端。
第一,二個肯定是,很多招聘帖上都寫的有。第三個不確定,它完全是新的一套引擎(解釋器都換了),包管理也是npm才對。后面兩個是前端框架。
日新月異的前端,目前還有vue.js, Native.js, framework7,rxjs等等。前端天天在吵架,然并卵,就像在android中神話了的MVVM,代碼量并沒有減小。
我個人比較看好React-Native,一次學(xué)習(xí),四處編寫。
20.二進(jìn)制0.101001B等于十進(jìn)制()?
0.640625D
0.620125D
0.820325D
0.804625D
解答:0.640625D。
1/2 + 1/8 + 1/64
= 0.5 + 0.125 + 0.015625
= 0.640624D
21.關(guān)于數(shù)據(jù)類型的取值范圍,在Java中執(zhí)行語句 byte b = (byte)128,請問b的值是多少?
1. -1
2. 128
3. -128
4. 出錯
解答:
答案為128;
第一,強(qiáng)制轉(zhuǎn)換實際上就是添加mask,偽代碼如下
0x80 & 0xff;
第二,char與byte的區(qū)別(特指C中)
0x00 ~ 0x7f0x80 ~ 0xff
byte
0 ~ 127
128 ~ 255
char
0 ~ 127
-128 ~ -1
如果我們把byte改成char,結(jié)果就是-128了,因為java中的char是有符號而且是雙子節(jié)的。
22.關(guān)于下面程序執(zhí)行的結(jié)果,有哪些是正確的:
var a = 10;
function fn(a){
var a = 20;
alert(a);
}
fn(a);
alert(a);
var a;
alert(a);
var a = 30;
alert(a);
1. 20,10,10,30
2. 20,10,undefined,30
3. 20,20,100,30
4. 10,20,undefined,30
解答:
答案是20,10,10,30。這個題目要是在C語言中運(yùn)行的話,會報錯3次redefined a,而本題中最迷惑的就是 var a; ,在js中
如果其中一個是undefined,那么就取那個非undefined
如果都不是undefined,那就取最新的值
23.Python代碼....咳咳,題目圖片本身就壓了好幾遍。
Python Singleton
解答:單例模式
24.網(wǎng)絡(luò)帶寬擁堵可能導(dǎo)致以下哪些問題?
1. UDP丟包變嚴(yán)重
2. tcp數(shù)據(jù)被寫亂
3. tcp丟包
4. tcp傳輸速度驟降
解答:1 3 4
網(wǎng)絡(luò)擁塞一般是由三個原因照成:
存儲空間(緩存),比如緩存隊列滿了就會被路由器丟包;
帶寬不足,比如出國帶寬;
處理器不足,特別是在openwrt路由器上,由于MIPS的CPU性能優(yōu)化不足,比如沒有打開HWNAT,導(dǎo)致網(wǎng)速下降。
解決擁塞:滿足上面三個短板,或者用不道德的工具(比如銳速)搶出口。
25.看不清了,題目本身就不清楚。
26.下列函數(shù)的時間復(fù)雜度是
int foo(int n){
int i = 1;
while(1 <= n){
i = i*2;
}
return 1;
}
解答:
答案是O(log2N),非常簡單。這里的 i = i*2 可以用 i <<= 1來優(yōu)化哦。
27.使用快速排序?qū)83,123,69,179,118,13,190}進(jìn)行升序排序,請問如下那個是第一趟快排交換后的結(jié)果?
1. {13,69,83,179,118,123,190}
2. {13,83,69,179,118,123,190}
3. {13,69,83,118,179,123,190}
4. {13,123,69,179,118,83,190}
13 69 123 179 118 83 190
解答:答案是 1
選擇83作為pivot,i,j同時從左邊走,i表示最左邊的大于83的數(shù),j用于向右開擴(kuò);
83,123,69,179,118,13,190
83,69,123,179,118,13,190(69 resolved)
83,69,13,179,118,123,190(13 resolved)
13, 69, 83,179,118,123,190 (83 inserted)
28.關(guān)于TCP和UDP協(xié)議的說法正確的有:
1. TCP是面向連接的協(xié)議,而UDP是無連接的協(xié)議
2. TCP建立連接過程中,協(xié)議棧需要進(jìn)行三次握手,而關(guān)閉連接則需要進(jìn)行4次握手;
3. UDP協(xié)議常常用于容忍丟數(shù)據(jù),但需要更高傳送性能的業(yè)務(wù)場景;
4. UDP和TCP協(xié)議棧都具備保證數(shù)據(jù)包時序性的能力,并通過滑動窗口機(jī)制進(jìn)行擁塞控制。
解答:1 2 3
29.假設(shè)代碼如下:
#include
#pragma pack(8)
struct X{
uint8_t a;
uint32_t b;
uint16_t c;
};
#pragma pack()
int main(){
struct X x;
printf("%d\n",sizeof(x));
return 0;
}
解答:
答案是12。同剛剛的那道結(jié)構(gòu)體對齊的題目,公式如下
MIN(MAX(DataType),#pragram pack(8))
= MIN(4,8);
= 4;
所以以4byte為準(zhǔn)則進(jìn)行對齊,它的內(nèi)存布局如下
address0x000x01 ~ 0x030x04 ~ 0x070x08 ~ 0x090xa0 ~ 0xa1
value
a
padding
b
c
padding
如果我們現(xiàn)在改一下結(jié)構(gòu)體的布局
struct X{
uint8_t a;
uint16_t c;
uint32_t b;
};
它的布局是這樣的
address0x000x010x02 ~ 0x030x04 ~ 0x07
value
a
padding
b
c
這樣,結(jié)構(gòu)體的占用就變少了,sizeof由12變成了8。
在底層中,通常用 UCHAR reserved[] 進(jìn)行手動填充,以免被編譯器等外部條件坑。
30.一顆二叉樹有5個節(jié)點,樹的形態(tài)有多少種?
1. 38
2. 42
3. 46
4. 58
解答:42
考的是遞推。以根節(jié)點為開始,按照左一右零,左一右一,左零右一的三個方向進(jìn)行調(diào)用,網(wǎng)上有公式。
大題(60分鐘)
1.請盡可能多的列舉/描述出你所了解的個進(jìn)程間通信機(jī)制已經(jīng)對應(yīng)的應(yīng)用場景,各自的優(yōu)缺點。
這個有點hold不住,我盡可能說自己能夠有參考的答案。
ASM。在android中,我們常說的廣播,Intent本質(zhì)都是ASM,比如Binder,AIDL,共享同一個內(nèi)存而不用復(fù)制,在linux中,映射為/dev/ashmem文件。
Socket。好處當(dāng)然是便于服務(wù)器控制,而且方便抓包減少互相推諉的可能性,而且當(dāng)你走內(nèi)部地址(比如環(huán)回地址)時,數(shù)據(jù)不用經(jīng)過物理網(wǎng)卡,OS內(nèi)核還可以進(jìn)行某些優(yōu)化。使用上在android中比如百度全家桶后門自動用IPC喚醒甚至靜默安裝APP;在跨平臺開發(fā)中,大部分使用socket進(jìn)行通信;
管道(Pipe)。最簡單的例子就是linux的命令,比如ls | grep *.png,中間就是管道;在比如說在golang中,天生自帶管道。android中的handler,在native中也是通過讀寫管道來控制Looper阻塞的。
剩下的還有消息隊列,信號(Signal),信號量(semaphore),目前接觸不多,就不寫了。
2.已知結(jié)構(gòu)體StructA定義如下
#include
typedef struct _StruckA{
unsigned int val1;
unsigned char bSuccess;
unsigned int val2;
unsigned char bInitialize;
}structA, *pStructA;
int main(){
structA a;
a.val1 = 0x12345678;
a.bSuccess = 0;
a.val2 = 0xABCDEF01;
a.bInitialize = 1;
//請給出變量a在x86,x64下的內(nèi)存分布情況
return 0;
}
解答:
address0x00 ~ 0x030x040x05 ~ 0x70x08 ~ 0x0b0x0c0x0d ~ 0x0f
value
val1
bSuccess
padding
val2
bInitialize
padding
還是按照4byte對齊,共16bype,具體原理我在前面的字節(jié)對其中已經(jīng)講了
而且我沒有32位的機(jī)子測試啊,全是LP64的....運(yùn)行以下代碼
printf("%d\n",sizeof(a));
printf("%p\n",&a);
printf("%p\n",&a.val1);
printf("%p\n",&a.bSuccess);
printf("%p\n",&a.val2);
printf("%p\n",&a.bInitialize);
Xcode6.3
16
0x7fff5fbff838
0x7fff5fbff838
0x7fff5fbff83c
0x7fff5fbff840
0x7fff5fbff844
Ubuntu14.10 x64
16
0x7fff652a4880
0x7fff652a4880
0x7fff652a4884
0x7fff652a4888
0x7fff652a488c
然后我又在在線編譯測試了一下,仍然是一樣的,如果有用32位的小伙伴,幫我測試一下哦。
3.設(shè)計抽卡程序,策劃人員填寫物品出現(xiàn)概率,程序按照概率隨機(jī)抽出物品。配置表如下:
10
50
4.用C寫一個程序,得出當(dāng)前系統(tǒng)的整型數(shù)字長(16位,32位,64位等),不能使用sizeof()
解答:
使用數(shù)組即可
#include
unsigned int getSize(){
int a[2] = {1,2};
return (char*)(a+1) - (char*)a;
}
或者
unsigned int getSize(){
int *a;
return (char*)(a+1) - (char*)a;
}
5.在傳統(tǒng)的CS網(wǎng)絡(luò)模型中,server端需要控制請求量,對超過某個閥值的請求量直接拋棄或者返回錯誤,以保護(hù)自己(過載保護(hù))。假設(shè)一個Server服務(wù)的能力為1W Qps,設(shè)計一個過濾機(jī)制,對于超過服務(wù)能力的請求直接拋棄。
明顯的一個Dispatcher機(jī)制,如果了解過nginx,flux的話,非常容易了解。這個題目我覺得加個緩存更好。
總結(jié)
以上是生活随笔為你收集整理的与0xf2值相等的是python_腾讯笔试题涵盖的基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 露营终于有人管了 广州:搭帐篷需预约 飞
- 下一篇: python实现数字时钟_Python