.實現(xiàn)雙向鏈表刪除一個節(jié)點P,在節(jié)點P后插入一個節(jié)點,寫出這兩個函數(shù)。
2.寫一個函數(shù),將其中的\t都轉(zhuǎn)換成4個空格。
3.Windows程序的入口是哪里?寫出Windows消息機制的流程。
4.如何定義和實現(xiàn)一個類的成員函數(shù)為回調(diào)函數(shù)?
5.C++里面是不是所有的動作都是main()引起的?如果不是,請舉例。
6.C++里面如何聲明const void f(void)函數(shù)為C程序中的庫函數(shù)?
7.下列哪兩個是等同的
int b;
A const int* a = &b;
B const* int a = &b;
C const int* const a = &b;
D int const* const a = &b;
8.內(nèi)聯(lián)函數(shù)在編譯時是否做參數(shù)類型檢查?
void g(base & b){
b.play;
}
void main(){
son s;
g(s);
return;
}?
1,程序設(shè)計(可以用自然語言來描述,不編程):C/C++源代碼中,檢查花括弧(是"("與
")","{"與"}")是否匹配,若不匹配,則輸出不匹配花括弧所在的行與列。
2,巧排數(shù)字,將1,2,...,19,20這20個數(shù)字排成一排,使得相鄰的兩個數(shù)字之和為一個素數(shù),且
首尾兩數(shù)字之和也為一個素數(shù)。編程打印出所有的排法。
3,打印一個N*N的方陣,N為每邊字符的個數(shù)( 3〈N〈20 ),要求最外層為"X",第二層為"Y",從第三層起每層依次打印數(shù)字0,1,2,3,...
例子:當(dāng)N =5,打印出下面的圖形:
?X X X X X
?X Y Y Y X
?X Y 0 Y X
?X Y Y Y X
?X X X X X?
?
1.請你分別畫出OSI的七層網(wǎng)絡(luò)結(jié)構(gòu)圖和TCP/IP的五層結(jié)構(gòu)圖。
2.請你詳細地解釋一下IP協(xié)議的定義,在哪個層上面?主要有什么作用?TCP與UDP呢?
3.請問交換機和路由器各自的實現(xiàn)原理是什么?分別在哪個層次上面實現(xiàn)的?
4.請問C++的類和C里面的struct有什么區(qū)別?
5.請講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用。
6.全局變量和局部變量有什么區(qū)別?是怎么實現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的?
7.8086是多少位的系統(tǒng)?在數(shù)據(jù)總線上是怎么實現(xiàn)的?
聯(lián)想筆試題
1.設(shè)計函數(shù) int atoi(char *s)。
2.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 輸出是多少?
3.解釋局部變量、全局變量和靜態(tài)變量的含義。
4.解釋堆和棧的區(qū)別。
5.論述含參數(shù)的宏與函數(shù)的優(yōu)缺點。
c++最后幾個大題目是
1,實現(xiàn)雙向鏈表刪除一個節(jié)點P,在節(jié)點P后插入一個節(jié)點,這兩個函數(shù)。
2,寫一個函數(shù)將其中的\t都轉(zhuǎn)換成4個空格。
3,windows程序的入口是哪里?寫出windows消息機制的流程。
4,如何定義和實現(xiàn)一個類的成員函數(shù)為回調(diào)函數(shù)。
還有前面的幾個:
1. class A{
int a;
int b;
}
問的是編譯時的default constructor function的問題。
還有一個說,A有其他自己定義的構(gòu)造函數(shù),問是否還有default constructor function
還是什么來著,記不清樂。
2. c++里面是不是所有的動作都是main()引起的?如果不是,請舉例。
3. c++里面如何聲明const void f(void)函數(shù)為C庫函數(shù)?(這個我前幾天還看來著,
居然就忘記樂, )
對了,還考樂一些關(guān)于const的問題
問下列哪兩個是等同的
int b;
A const int* a = &b;
B const* int a = &b;
C const int* const a = &b;
D int const* const a = &b;
還有一個是考類的成員函數(shù)是 void f() const;型的時候調(diào)用的問題。
幸好昨天剛剛看樂這部分的內(nèi)容,呵呵
內(nèi)聯(lián)函數(shù)考了一題,問內(nèi)聯(lián)函數(shù)在編譯時是否做參數(shù)類型檢查。
虛函數(shù)也考了一題,不過不難。
class base{
public:
virtual void play(){
cout<<"base";
}
}
class son: public base{
public:
void play(){cout<<"son";}
}
void g(base & b){
b.play;
}
void main(){
son s;
g(s);
return;
}
我所收集的intel比試題&面試題:
(熟悉大公司的題目,并不僅僅是為了進這些公司,而是很多國內(nèi)公司考察內(nèi)容都很接近而已.)
2005筆試 :
1。高效的內(nèi)存管理
2。8皇后問題
面試q:
(2) 編譯中的問題:全局變量如int i=5; int*(pf)()=foo; 分別在何時被初始化?設(shè)計時候如何具體的實現(xiàn)。
(3) OS相關(guān)的問題,內(nèi)存訪問,cache等(包括cache在整個系統(tǒng)中的位置,畫出來,并解釋)
(4) 解釋例如mov ax,100H 這樣一條指令的cpu, os, memory等都完成了什么樣的工作。
(5) Strlen()的C語言實現(xiàn),不能使用任何變量。
(6) 編譯中display表的一些問題
(7) 一個hash函數(shù),輸入隨機,現(xiàn)發(fā)生沖突,如數(shù)據(jù)集中在某幾條中,問怎樣處理hash函數(shù)保證高效的訪問,怎樣實現(xiàn)?
(8) 把Switch()case…語句翻譯成三元組。
(9) 一個byte(用C語言實現(xiàn)計數(shù)其中1的個數(shù)),給出最高效的實現(xiàn)方法。(位域)或者查表最快的;
(10) 上海有多少個加油站?你是怎樣解決這一問題?
(11) C語言參數(shù)的入棧順序?為什么這么實現(xiàn)?
(12) 你的最大的優(yōu)點和缺點分別是什么?
(13) C語言中字符串的翻轉(zhuǎn),最高效率(時間和空間)的實現(xiàn)?
2004
1. 三個float:a,b,c 問值
(a+b)+c==(b+a)+c
(a+b)+c==(a+c)+b
2. 把一個鏈表反向填空
3. 設(shè)計一個重采樣系統(tǒng),說明如何anti-alias
4. y1(n)=x(2n), y2(n)=x(n/2),問:
如果y1為周期函數(shù),那么x是否為周期函數(shù)
如果x為周期函數(shù),那么y1是否為周期函數(shù)
如果y2為周期函數(shù),那么x是否為周期函數(shù)
如果x為周期函數(shù),那么y2是否為周期函數(shù)
5. 如果模擬信號的帶寬為5KHZ,要用8K的采樣率,怎么辦。
4. 某個程序在一個嵌入式系統(tǒng)(200M的CPU,50M的SDRAM)中已經(jīng)最化了,換到另一個系統(tǒng)
(300M的CPU,50M的SDRAM)中運行,還需要優(yōu)化嗎?
5. x^4+a*x^3+x^2+c*x+d最少需要作幾次乘法
6. 什么情況下,sin(x+y)+y ~ ....
7. 下面哪種排序法對12354最快
a quick sort
b.buble sort
c.merge sort
8. 哪種結(jié)構(gòu),平均來講,獲取一個值最快
a. binary tree
b. hash table
c. stack
1。 pipeline
2。 程序流程圖題目
3。 哲學(xué)家進餐
4。 32bit,64bit,兩個平臺上complier,linker,os kernel,library,debuger的性質(zhì)
5。 const char * vs char const * (?)
6。 GDT and LDT
7。 1+1<<1
8。 Stack性質(zhì)
9。 ???
10。正方體中壓力什么的。。。
大題
1。f[40,400],log10變換
2。ACPI
3。讀程序
4。頻譜,采樣分析
大題
1。寫出下列信號的奈虧斯特頻率
(1)f(t)=1+cos(2000pait)+sin(4000pait)
(2)f(t)=sin(4000pait)/pait
(3)f(t)=(sin(4000pait)的平方)/pait
2.填程序
把一個計算m^n的程序填充完整
大概的意思是:
有一個全局數(shù)組char s[BUFSIZE]
利用這個數(shù)組計算,就是每個單元存放計算結(jié)果的一位,index小的存放低位,index大
的存放高位
3。有兩個線程
void producer()
{
while(1)
{
GeneratePacket();
PutPacketIntoBuffer();
Signal(customer);
}
}
void customer()
{
while(1)
{
WaitForSignal();
if(PacketInBuffer>10)
{
ReadAllPackets();
ProcessPackets();
}
}
}
(1)有沒有其他方法可以提高程序的性能
(2)可不可以不使用信號之類的機制來實現(xiàn)上述的功能
4。優(yōu)化下面的程序
(0)sum=0
(1)I=1
(2)T1=4*I
(3)T2=address(A)-4
(4)T3=T2[T1]
(5)T4=address(B)-4
(6)T5=4*I
(7)T6=T4[T5]
(8)T7=T3*T5
(9)sum=sum+T6
(10)I=I+1
(10)IF I<20 GOTO (2)
1。關(guān)于c的main函數(shù)
2。15個人循環(huán)報數(shù),報到N的出列,找出最后留下的那個人,算法填空題
2。找出一個給出的并行解決方案的錯誤情況
3。關(guān)于GPIO,intel的四種體系結(jié)構(gòu)
選擇題10題
有關(guān)vc和c,指針,HyporThreading Dual-core等等
看也看不懂的
2003年的
1:概率題。x,y為隨機變量,聯(lián)合概率密度 f(x,y) = intig(0,1)*dx*intig(0,x)*k*d
y,k為常數(shù),求k=? E(xy)=?
注:intig(a,b)為a到b的定積分。
2:概率題。A,B為隨機事件,以下哪個正確
A. P(A U B)*p(AB) <= P(A)P(B)
B. P(A U B)*p(AB) >= P(A)P(B)
C. P(A U B)*p(AB) <= P(A) + P(B)
D. P(A U B)*p(AB) >= P(A) + P(B)
3: 信道帶寬200kHz,信噪比10dB,求信道波特率=?
4:以下代碼運行結(jié)果是什么
int main()
{
int a,b,c,abc = 0;
a=b=c=40;
if(c)
{
int abc;
abc = a*b+c;
}
printf("%d,%d", abc, c);
return 0;
}
5:給出了從紐約出發(fā)和到達落山雞的各種航班信息,寫出找到一條從紐約到落山雞的最
短距離的航班組合的代碼。
6:從計算機圖形上截取某個物體邊緣的若干個坐標(biāo),求這個物體面積,并跟判斷是方形
還是圓形,為啥。(坐標(biāo)不記得,大概是個圓
)。
7:離散卷機與DFT的區(qū)別與關(guān)系。快速求不滿足2^N長度的離散傅立葉變換的方法有哪些
?如何用fft求N*M點的離散卷機?
8:給出fir和iir的優(yōu)缺點。
9:如何計算線性標(biāo)量量化器的量化噪聲?需要那些假設(shè)?
1、請定義一個宏,比較兩個數(shù)a、b的大小,不能使用大于、小于、if語句
2、如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù)
3、兩個數(shù)相乘,小數(shù)點后位數(shù)沒有限制,請寫一個高精度算法
4、寫一個病毒
5、有A、B、C、D四個人,要在夜里過一座橋。他們通過這座橋分別需要耗時1、2、5、10分鐘,只有一支手電,并且同時最多只能兩個人一起過橋。請問,如何安排,能夠在17分鐘內(nèi)這四個人都過橋?
2005年騰訊招聘
選擇題(60)?
??c/c++?os?linux?方面的基礎(chǔ)知識?c的Sizeof函數(shù)有好幾個!?
程序填空(40)?
1.(20)?4空x5?
??不使用額外空間,將?A,B兩鏈表的元素交叉歸并?
2.(20)?4空x5?
MFC??將樹序列化?轉(zhuǎn)存在數(shù)組或?鏈表中!
?
1.請定義一個宏,比較兩個數(shù)a、b的大小,不能使用大于、小于、if語句
// 這樣轉(zhuǎn)向定義應(yīng)該不算違規(guī)吧!^_^
#include
"stdafx.h"
#include
<string.h>
#include
<iostream>
using
namespace
std;
?
#define
Cmp(x,y) compare(x,y)
?
int
compare(
int
a,
int
b)
{
???? a^=(1<<31); b^=(1<<31);
????
int
i=31;
???
while
((i^-1) && !((a&(1<<i))^(b&(1<<i))))???? i--;
????
return
(i^-1)?(((a>>i)&1)?1:-1):0;
}
?
int
_tmain()
{
????
int
c;
???? c = Cmp(5,4);
???? cout<<c<<endl;
????
return
0;
}
jruv ? (~~~一葉落而知天下秋~~~) 的答案:
#define ? COMPARE(a,b) ? ((a)-(b)) ? ? ? ? //<0: ? a<b ? =0:a==b>0:a>b??
2.如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù)
cout ? << ? "Filename ? " ? << ? __FILE__ ? << ? " ? Line ? " ? << ? __LINE__ ? << ? endl;
3.兩個數(shù)相乘,小數(shù)點后位數(shù)沒有限制,請寫一個高精度算法
? 算法提示:
????
???? 輸入 string a, string b; 計算string c=a*b; 返回 c;
1,
??
紀(jì)錄小數(shù)點在a,b中的位置l1,l2, 則需要小數(shù)點后移動位置數(shù)為l=length(a)+length(b)-l1-l2-2;
2,
??
去掉a,b中的小數(shù)點,(a,b小數(shù)點后移,使a,b變?yōu)檎麛?shù))
3,
??
計算c=a*b; (同整數(shù)的大數(shù)相乘算法)
4,
??
輸出c,(注意在輸出倒數(shù)第l個數(shù)時,輸出一個小數(shù)點。若是輸出的數(shù)少于l個,就補0)
du51(郁郁思揚)的答案:
變?yōu)檎麛?shù)求就行了.輸入的時候記一下,小數(shù)點位置..輸出再做點文章就行了.
下面的是大整數(shù)的運算.
#include<iostream>
using namespace std;
#define MAX 10000
struct Node{
?? int data;
?? Node *next;
};
void output(Node *head)
{
?? if(!head->next&&!head->data)return;
?? output(head->next);
?? cout<<head->data;
}
void Mul(char *a,char *b,int pos)????????
{
?? char *ap=a,*bp=b;
?? Node *head=0;
?? head=new Node;head->data=0,head->next=0;?? //頭
?? Node *p,*q=head,*p1;
?? int temp=0,temp1,bbit;
?? while(*bp)??????????????? //若乘數(shù)不為空 ,繼續(xù).
?? {
?????? p=q->next;p1=q;
?????? bbit=*bp-48;????????? //把當(dāng)前位轉(zhuǎn)為整型
?????? while(*ap||temp)??????????? //若被乘數(shù)不空,繼續(xù)
?????? {
?????????? if(!p)??????????? //若要操作的結(jié)點為空,申請之
?????????? {
?????????????? p=new Node;
?????????????? p->data=0;
?????????????? p->next=0;
?????????????? p1->next=p;
?????????? }
?????????? if(*ap==0)temp1=temp;
?????????? else { temp1=(p1->data)+(*ap-48)*bbit+temp;ap++; }
?????????? p1->data=temp1%10;??? //留當(dāng)前位
?????????? temp=temp1/10;??? //進位以int的形式留下.
?????????? p1=p;p=p->next;???????????????? //被乘數(shù)到下一位
?????? }
?????? ap=a;bp++;q=q->next;??????????????? //q進下一位
?? }
?? p=head;
?? output(p);?????????????????? //顯示
?? cout<<endl;
?? while(head)???????????????? //釋放空間
?? {
?????????? p=head->next;
?????????? delete head;
?????????? head=p;
?? }
}
int main()
{
?? cout<<"請輸入兩個數(shù)"<<endl;
?? char test1[MAX],test2[MAX];
?? cin.getline(test1,MAX,'\n');
?? cin.getline(test2,MAX,'\n');
?? Mul(strrev(test1),strrev(test2));
?? system("PAUSE");
?? return 0;
}
上面大整數(shù)已經(jīng)寫了.你加幾個東西就行了.
#include<iostream>
using namespace std;
#define MAX 10000
struct Node{
?? int data;
?? Node *next;
};
void output(Node *head,int pos)
{
?? if(!head->next&&!head->data)return;
?? output(head->next,pos-1);
?? cout<<head->data;
?? if(!pos)cout<<".";
}
void Mul(char *a,char *b,int pos)????????
{
?? char *ap=a,*bp=b;
?? Node *head=0;
?? head=new Node;head->data=0,head->next=0;?? //頭
?? Node *p,*q=head,*p1;
?? int temp=0,temp1,bbit;
?? while(*bp)??????????????? //若乘數(shù)不為空 ,繼續(xù).
?? {
?????? p=q->next;p1=q;
?????? bbit=*bp-48;????????? //把當(dāng)前位轉(zhuǎn)為整型
?????? while(*ap||temp)??????????? //若被乘數(shù)不空,繼續(xù)
?????? {
?????????? if(!p)??????????? //若要操作的結(jié)點為空,申請之
?????????? {
?????????????? p=new Node;
?????????????? p->data=0;
?????????????? p->next=0;
?????????????? p1->next=p;
?????????? }
?????????? if(*ap==0)temp1=temp;
?????????? else { temp1=(p1->data)+(*ap-48)*bbit+temp;ap++; }
?????????? p1->data=temp1%10;??? //留當(dāng)前位
?????????? temp=temp1/10;??? //進位以int的形式留下.
?????????? p1=p;p=p->next;???????????????? //被乘數(shù)到下一位
?????? }
?????? ap=a;bp++;q=q->next;??????????????? //q進下一位
?? }
?? p=head;
?? output(p,pos);?????????????????? //顯示
?? cout<<endl;
?? while(head)???????????????? //釋放空間
?? {
?????????? p=head->next;
?????????? delete head;
?????????? head=p;
?? }
}
int main()
{
?? cout<<"請輸入兩個數(shù)"<<endl;
?? char test1[MAX],test2[MAX],*p;
?? int pos=0;
?? cin.getline(test1,MAX,'\n');
?? cin.getline(test2,MAX,'\n');
?? if(p=strchr(test1,'.'))
?? {
?????? pos+=strlen(test1)-(p-test1)-1;
?????? do
?????? {
?????????? p++;
?????????? *(p-1)=*p;
?????? }while(*p);
?? }???????
?? if(p=strchr(test2,'.'))
?? {
?????? pos+=strlen(test2)-(p-test2)-1;
?????? do
?????? {
?????????? p++;
?????????? *(p-1)=*p;
?????? }while(*p);
?? }???
?? Mul(strrev(test1),strrev(test2),pos);
?? system("PAUSE");
?? return 0;
}
4.寫一個病毒
cout<<"一個病毒"<<endl;
(開玩笑的,沒搞過,^_^)
?
5.讓你在100000000個浮點數(shù)中找出最大的10000個,要求時間復(fù)雜度優(yōu)。
//本算法使用快排,O(n*lg(n))?
//最低可以找到線性算法,使用預(yù)先區(qū)域統(tǒng)計劃分!類試于構(gòu)造Quad Trees! 寫起來代碼會長些!
?
#include
<stdio.h>
#include
<stdlib.h>
?
#define
Max 100000000
int
a[Max+10];
?
int
cmp(
const
void
*a,
const
void
*b)
{
????
int
*x = (
int
*) a;
????
int
*y = (
int
*) b;
????
return
*x-*y;
}
?
int
main()
{
????
int
n=0;
????
while
(scanf("%d",&a[n])==1)???? n++;
???? qsort(a,n,4,cmp);
????
for
(
int
i=0;i<3;i++)???? printf("%d",a[ i ]);
????
return
1;
}
5
、有
A
、
B
、
C
、
D
四個人,要在夜里過一座橋。他們通過這座橋分別需要耗時
1
、
2
、
5
、
10
分鐘,只有一支手電,并且同時最多只能兩個人一起過橋。請問,如何安排,能夠在
17
分鐘內(nèi)這四個人都過橋?
Solution:關(guān)鍵是時間最長的兩個人必須同時過橋
The First Time
:
?? ?? A(1)
和
B(2)
過橋,
A(1)
返回
Cost
:
1+2
The Second Time
:
?? C(5)
和
D(10)
過橋,
B(2)
返回
Cost
:
10+2
The Third Time? ?? A(1)
和
B(2)
過橋
Cost
:
2
Total Time Cost
:
?? (1+2)+(10+2)+2=17 minutes
1.請定義一個宏,比較兩個數(shù)a、b的大小,不能使用大于、小于、if語句 ?
? 2.如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù) ?
? 3.兩個數(shù)相乘,小數(shù)點后位數(shù)沒有限制,請寫一個高精度算法 ?
? 4.寫一個病毒
posted on 2006-10-18 23:03
Jerry Cat 閱讀(5118)
評論(1) 編輯 收藏 引用