intel——笔试题2

 

intel——笔试题2

http://blog.csdn.net/tvtvtvtv/article/details/1403661

分类: 找工作历程   3457人阅读  评论(1)  收藏  举报 struct string tcp 服务器 performance 编译器 发信人: commonman (问号), 信区: job 标 题: intel 考试感想(附题目回忆) 发信站: 饮水思源 (2002年11月07日10:56:46 星期四), 站内信件 今天考完,暴受打击,好些题目根本就看不懂。感觉intel考题很专业, 考试分cs与ee试卷,我考的是cs试卷。 全部考c语言知识,而且都是很专门的,譬如说编译器优化。 只有平时确实对计算机编译以及c语言本身有很深入了解的,才能有比较 好的笔试成绩。 一共三部分 第一部分是选择题 第二部分是问答题 第三部分是智力题 选择题暴奇怪,很多题目都看不明白,记不大明白了。从略。 问答题一共三道, 第一道是一个编译器优化的题目。条件大致说在ZF 为0或者不为0的情况下,分别有两条移位指令可以移进去。然后出了 两个小题,要你优化。 第二道是N个人围成一圈报数,报到某一个数的就出局,问你最后剩下 来的那个人的号码。编程题。 约瑟夫环 第三道大致如下: 以下两个程序哪个的performance高,并解释为什么。 a) extern int foo(void); int main() { int i; for(i=0;i<10000;i++) foo(); return i; } b) extern int foo(void); int i; int main() { for(i=0;i<10000;i++) foo(); return i; } 智力题 将如下图形(边长相等,即突出的都是正方形)割成几块,再拼成一个正方形, 要求最少最少。 --- |     | ---     --- |                | ---     --- |     | --- 以下两个程序哪个的performance高,并解释为什么。 extern int foo(void); int main() { int i; for(i=0;i<10000;i++) foo(); return i; } b) extern int foo(void); int i; int main() { for(i=0;i<10000;i++) foo(); return i; } 我也看到编译原理书里说函数调用的时候局部变量要被作为 现场被保存,返回时要恢复的,导致效率较低。 发信人: bright (FTPScout最新版本1.16), 信区: Job 标 题: Intel今年在电子科技大学的笔试题 发信站: 一网深情 (2002年11月15日16:35:20 星期五), 站内信件 Intel笔试题目并没有想象的那么变态,还是一些基本的东西, 下面是我记下的一些题,希望对下届的ddmm有所帮助。 试题分CS和EE两套,做EE题的同学必须做CS题(但其中关于编译的题不用做) EE的题目 1、电路设计时,什么情况下需要进行信号完整性分析? 2、用一个欧姆表怎么判断出三极管的e、b、c极? 3、简述Nyquist带通采样定理 4、你能想到的最大的影子是什么? 太阳 5、 24 个人要求排成 6 排,每排 5 人,如何排? 正六边形,一边站 5 5*6 -6 =24 6、将1~9填入下图所示的圆圈中,使3边和相等,有多少种填法? 阐述你的思路,并用伪代码实现 o o o o   o o o o o 7、简述TCP三次握手过程,并说明为什么要3次握手 TCP  三次握手 TCP  连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换  TCP  窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程: 1.  客户端向服务器发送一个 SYN 置位的 TCP 报文,其中包含连接的初始序列号 x 和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。 2.  服务器收到客户端发送过来的 SYN 报文后,向客户端发送一个 SYN ACK 都置位的 TCP 报文,其中包含它选择的初始序列号 y 、对客户端的序列号的确认 x+1 和一个窗口大小(表示服务器上用来存储从客户端发送来的传入段的缓冲区的大小)。 3. . 客户端接收到服务器端返回的 SYN+ACK 报文后,向服务器端返回一个确认号 y+1 和序号 x+1 ACK 报文,一个标准的 TCP 连接完成。 TCP  使用类似的握手过程来结束连接。这可确保两个主机均能完成传输并确保所有的数据均得以接收
TCP Client Flags TCP Server
1 Send SYN (seq=x) ----SYN---> SYN Received
2 SYN/ACK Received <---SYN/ACK---- Send SYN (seq=y) ACK (x+1)
3 Send ACK (y+1) ----ACK---> ACK Received ConnectionEstablished
w: ISN (Initial Sequence Number) of the Client
x: ISN of the Server
8、 局域网被网桥或路由器分割成子网有什么好处? CS的题目 1、一个有符号数与无符号数的转换问题 2、有数组a[M][N],问下面 那种算法效率高 (a)for(int i=0;i内联函数的执行过程与带参数宏定义很相似,但参数的处理不同。带参数的宏定义并不对参数进行运算,而是直接替换;内联函数首先是函数,这就意味着函数的很多性质都适用于内联函数,即内联函数先把参数表达式进行运算求值,然后把表达式的值传递给形式参数。 内联函数与带参数宏定义的另一个区别是,内联函数的参数类型和返回值类型在声明中都有明确的指定;而带参数宏定义的参数没有类型的概念,只有在宏展开以后,才由编译器检查语法,这就存在很多的安全隐患。 先说宏和函数的区别: 1.  宏做的是简单的字符串替换 ( 注意是字符串的替换 , 不是其他类型参数的替换 ), 而函数的参数的传递 , 参数是有数据类型的 , 可以是各种各样的类型 . 2.  宏的参数替换是不经计算而直接处理的 , 而函数调用是将实参的值传递给形参 , 既然说是值 , 自然是计算得来的 . 3.  宏在编译之前进行 , 即先用宏体替换宏名 , 然后再编译的 , 而函数显然是编译之后 , 在执行时 , 才调用的 . 因此 , 宏占用的是编译的时间 , 而函数占用的是执行时的时间 . 4.  宏的参数是不占内存空间的 , 因为只是做字符串的替换 , 而函数调用时的参数传递则是具体变量之间的信息传递 , 形参作为函数的局部变量 , 显然是占用内存的 . 5.  函数的调用是需要付出一定的时空开销的 , 因为系统在调用函数时 , 要保留现场 , 然后转入被调用函数去执行 , 调用完 , 再返回主调函数 , 此时再恢复现场 , 这些操作 , 显然在宏中是没有的 .   现在来看内联函数 : 所谓 " 内联函数 " 就是将很简单的函数 " 内嵌 " 到调用他的程序代码中 , 只样做的目的是为了避免上面说到的第 5 , 目的旨在节约下原本函数调用时的时空开销 . 但必须注意的是 : 作为内联函数 , 函数体必须十分简单 , 不能含有循环、条件、选择等复杂的结构,否则就不能做为内联函数了。事实上,即便你没有指定函数为内联函数,有的编译系统也会自动将很简单的函数作为内联函数处理;而对于复杂的函数,即便你指定他为内联函数,系统也不会理会的。 CS的题比较琐碎,所以记不了那么多了。希望其它兄弟补充! struct  A{     int i;     char j;     char * ptr;     long Array[100];     char b[2];     char * c; }; #define  PRINT_ME (char *)&(((struct A *)0)->c) void  main() {     printf("%d/n", PRINT_ME); } 输出 416 ,也就是 c 在结构体 A 中的位移 class  CBase { public :     virtual void foo()     {                 cout<<"foo in base"<     }     virtual void bar()     {        cout<<"bar in base"<     } }; class  CChild : public CBase { public :     virtual void foo()     {               cout<<"foo in child"<     }     virtual void bar()     {        cout<<"bar in child"<     } }; int  * get(void); void  main() {            void (CBase::* pVirtualPointer)(void);     CBase base;     CChild child;     pVirtualPointer = CBase::foo;     (base.*pVirtualPointer)();     (child.*pVirtualPointer)();     pVirtualPointer = CBase::bar;     (base.*pVirtualPointer)();     (child.*pVirtualPointer)(); } 输出: foo in base foo in child bar in base bar in child 1、 何时调用拷贝构造函数 (根据一个object创建另一个object,clone) 
2、构造函数是否有返回类型 
3、一个4word(word=4bytes)的cache,问以下程序段cache命中率 
(a)for( int i=0; i for(int j=0; j< N; j++) 
sum+= a[i][j]; 
(b)for( int i=0; i for(int j=0; j< N; j++) 
sum+= a[j][i]; 
4、以下结构是否正确,why? 
u8应该是无符号8位的意思吧 
struct{ 
u8 a; 
u16 b; 
u8 c; 
u8 d; 
u16 e; 
u8 f;         
}; 
5、一个4×4矩阵,已知每列的和(缺第一列)和每行的和,问第一列的和。 
6、用伪汇编代码说明Switch语句的jump table的原理。 
7、STDCALL的含义。(sigh,记反了,应该是从右到左调用)   发信人 : OKMatrix ( 线性空间 ),  信区 : Job
   今天 Intel 笔试 ——Faint !!!!
发信站 红果园  (2002年11月04日16:30:42  星期一 ),  站内信件

    
今天上午有幸参加 Intel CS 笔试,题目不多,一共 10 道,可是涉
及到很多领域,时间也比较紧张,一共 45 分钟。很多题目还是很复杂的
,现在也记不清了,能回忆多少算多少吧!
    
题目是英文的,为了方便,我就用中文写了,好像回答也要用英文。
选择题的选项记不清,有的就不写选择项了,自己当作填空吧
交大一共去了 9 个人,那位兄弟补充一下? Thx
Section I
1.
P4 的机器上,下段代码的输出结果是什么:
#include 
struct{
        int a:3;
        int b:2;
        int c:3;
}s;
void main(void)
{
   char *p;
   p=(char*)&s;
   *p=0x99;
   printf("%d/n",*p);
   printf("%d,%d,%d",s.a,s.b,s.c);
}
2.
巨复杂的一道题,已经记不清了,在我了解的范围内还没有人做出来。
3.
Linux 操作系统中,假设一个进程 A file1 进行操作,然后一个进程
B
file1 改名为 file2 ,在改名的同时, A 进程对 file1 进行写操作,请问
进程 A,B 的执行情况。
4.
判断下面的系统哪个 / 些是软实时的?
四个选择项: IPVoice MP3Player 、?、?
5.
记不清了,好像有一个什么瓶颈什么的
6.
一个关于多 CPU 的系统问题,给了一大堆条件,最后问单个 CPU 的功耗,
条件太复杂记不清了,不好意思 !
Section II
7.
根据条件,写出 C 编程中的一个常用宏定义(常用于求偏移量)
#include 
#define offsizeof(Filed,Struction) ???????????
struct{
    int a;
    int b;
}s;
void main(void){
void main(void){
    ....
    printf("%d:%d",offsizeof(a,s),offsizeof(b,s));
}
输出结果是: 0 4
问完整的宏定义是什么?
8.
用伪代码实现如何监测 Struct 中是否含有循环?(题目
记不清了,大意如此)
9.
IP Voice 中,使用 UDP 协议还是是用 TCP 协议?为什么?
Section III
10.
智力测验:一共 9 个硬币,分三行排列,第一行 2 个,第二
3 个,第三行 4 个。有两个 Player 进行比赛,每次可以从一行
中取 1~n 个硬币 (2<=n<=4) ,直到取完为止,规则是谁最后一次
取谁输,如果你是第一个 Player ,问:如何取第一次才能保证
你必胜。
并请说明原因。  发信人 : wisher ( 幻想家 ),  信区 : Career
   去年  intel 的题目
发信站 未来花园  (2002年11月03日20:13:23  星期天 ),  站内信件

听朋友说的。
1
。先是给一个 100 行左右的 c 程序,有 3 句删了,让你补上
2
。计算机的基本组成
3
。一些硬件配置的问题
4
。数据结构的问题。
大体是这样了    关于字符串搜索 :          搜索字符串时常常使用 ? %, 例如 "abc?de%f" 的形式 , 其中 ? 代表某一个字符 ,% 代表任意长度 (>=0) 的一个字符串 , 可以搜索到的字符串可以有以下形式 :"abcydef","abchdeuioyewf" 等形式 , 请实现该算法 .          提示 : 一种可能可行的算法 : 类似与 kmp, 但要修改失败函数 ; 其他办法也可 . 要求效率高 . int   MatchPattern(   char   *String,   char   *Pattern)   {    if   (*Pattern   ==   '/0')   {   cout<<"Find   "<


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部