intel——一直得梦想,可惜也没有来招聘

intel今年刚大裁员,所以没有大规模的校园招聘。笔试题目又白准备了。 

 

标 题: Re: 往年的intel试题zz
发信站: BBS 水木清华站 (Mon Nov 4 17:27:31 2002), 站内信件
 
我来做一下
【 在 Yean (我真的不懂 ) 的大作中提到: 】
 
: 标 题: 往年的intel试题zz
 
: 发信站: BBS 水木清华站 (Sun Nov 3 18:21:52 2002)
 
: 1. 三个float:a,b,c
 
: 问值
 
: (a+b)+c==(b+a)+c
 
: (a+b)+c==(a+c)+b
 
这个问题主要是考虑浮点运算的精度问题,在指令级的运算中, a+b b+a
的精度是等效的,而 (a+b) 作为一个整体,相对于 a b 会丢失精度。
从而, (a+b)+c==(b+a)+c 的值是 1 ,而第二问的值极大的概率是 0
另外,需要提醒的是,浮点数在程序设计中一般不应该用来做 == 的比较
: 2. 把一个链表反向填空
 
简单的做法是把每个节点的Next指针指向改为指向Forward
: 3. 设计一个重采样系统,说明如何anti-alias
 
这个东西俺不明白,但是直觉应该是用sinc函数作为中间的桥梁
: 4. y1(n)=x(2n), y2(n)=x(n/2), 问:
 
: 如果y1为周期函数,那么x是否为周期函数
 
: 如果x为周期函数,那么y1是否为周期函数
 
: 如果y2为周期函数,那么x是否为周期函数
 
: 如果x为周期函数,那么y2是否为周期函数
 
这个就不做了,信号与系统的基本概念
: 5. 如果模拟信号的带宽为5KHZ,要用8K的采样率,怎么办。
 
用双通道就可以了,两个通道的夹角不超过2*arccos(5/8)
: 4. 某个程序在一个嵌入式系统(200M的CPU,50M的SDRAM)中已经最化了,换到另一
 
: 个系统: (300M的CPU,50M的SDRAM)中运行,还需要优化吗?
 
需要重新优化,因为最优的程序通常考虑了CPU的运算能力和
存储介质传输速度之间的匹配。当CPU频率提高,传输速度不
变时,可是适当增加流水线负荷来提高CPU利用率。
: 5. x^4+a*x^3+x^2+c*x+d最少需要作几次乘法
3 次。
第一次: y=x*x, 第二次: z=y*x ,第三次: t=y*y
: 7. 下面哪种排序法对12354最快
 
: a quick sort
 
: b.buble sort
 
: c.merge sort
 
b
: 8. 哪种结构,平均来讲,获取一个值最快
 
: a. binary tree
 
: b. hash table
 
: c. stack
 
b
: 大家讨论一下答案吧
 
#include "stdafx.h"
#include <iostream.h>
struct bit
{        int a:3;
        int b:2;
        int c:3;
};
int main(int argc, char* argv[])
{        bit s;
        char *c = (char*)&s;
        *c = 0x99;
        cout << s.a <<endl <<s.b<<endl<<s.c<<endl;
        return 0;
}
Output:
1
-1
-4
个人解释:
int 是有符号的,
这里的冒号代表这个 int 数的 bit 位数,
另外 a,b,c 应该是 little-endian a 是最低 3 位, b 是中间 2 位, c 是最高三位
0x99 的二进制是 10011001
所以 a=001 b=11 c=100
因为 int 是有符号的,所以 a=1,b 的符号位是 1 ,所以是补码, -1 取反得原码就是 1 ,所以是
-1 c 的符号位也是 1 ,但是补码是 00 ,所以代表 -4 。。。

 

发信人: legenderic (eric), 信区: job
标 题: intel lab 复旦的笔试题
发信站: 饮水思源 (2003 110720:54:25 星期五), 站内信件
 
大题
1。写出下列信号的 奈亏斯特频率
(1)f(t)=1+cos(2000pait)+sin(4000pait)
(2)f(t)=sin(4000pait)/pait
(3)f(t)=(sin(4000pait)的平方)/pait
2.填程序
把一个计算m^n的程序填充完整
大概的意思是:
有一个全局数组char s[BUFSIZE]
利用这个数组计算,就是每个单元存放计算结果的一位,index小的存放低位,index大
的存放高位
3。有两个线程
void producer()
{
    while(1)
    {
        GeneratePacket();
        PutPacketIntoBuffer();
        Signal(customer);
    }
}
void customer()
{
    while(1)
    {
        WaitForSignal();
        if(PacketInBuffer>10)
        {
            ReadAllPackets();
            ProcessPackets();
        }
    }
}
(1)有没有其他方法可以提高程序的性能
Producer 检查 PacketInBuffer>10 才发信号给 customer
(2)可不可以不使用信号之类的机制来实现上述的功能
Samephore
4。优化下面的程序
(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
 
3 )和( 5 )可以放到( 2 )前面,因为 T2 T4 的值是确定的
8 )可以去掉, T7 没有用到
考的题目大致上是这样的:
CS考题:大约三四题涉及体系结构,诸如pipeline,缓存的hit-ratio之类
        考了一些C/C++的知识
        有一题类似IQ题
        最最恶心的是有个写的很烂的程序,让你填空,反正我在15分钟内
没作出来,可能我比较弱吧。
EE考题:一题关于恒比码,是一种纠错码。
        一题是FFT
        一题枚举类型定义的(似乎应该放在CS里面)
        又一题IQ
 
1/ 编译中的问题:全局变量如int i=5; int*(pf)()=foo; 分别在何时被初始化?设计时候如何具体的实现。
int i = 5; 在编译时初始化; int (*fp)(void) = &foo; 在连接时初始化。
2/ 解释例如mov ax,100H 这样一条指令的cpu, os, memory等都完成了什么样的工作。
只能说操作系统在系统态或用户态去执行该指令。在执行该指令过程中由 CPU 去取指令,执行指令功能。
3/ Strlen()的C语言实现,不能使用任何变量。
int StrLen(char* p)
{
    if (*p == '/0')
       return 0;
    return StrLen(p+1) + 1;
}
4/ C语言参数的入栈顺序?为什么这么实现?
应该是从右向左的入栈顺序。因为 C 语言支持变参数函数,例如 wsprintf(), 在编译的时候函数并不能确定参数的个数,所以函数不能完成 " 栈清空 " 的操作 .
参数从左往右依次压栈对于被调用的函数来说,对实参的处理将变得非常容易。
 
调用者( Caller )将参数从右往左压栈,那么对于最左边的函数,即第一个参数是在栈顶。那么被调用的函数( Callee )就可以直接用 bp 去取该参数, bp+4 则指向第二个实参,依此类推。这是 C 调用协定。这样做的好处还有就是可以处理不定参数个数的函数调用,如 :int printf(const char*, ...);
5/ C语言中字符串的翻转,最高效率(时间和空间)的实现?
6/ 4. 某个程序在一个嵌入式系统(200M的CPU,50M的SDRAM)中已经最化了,换到另一个系统(300M的CPU,50M的SDRAM)中运行,还需要优化吗?
需要。因为对于嵌入式系统,优化往往是指令集层的。如果另一个系统提供了更高效的指令集系统(如超标量、多核等),那么还是有很大可能对原来系统进行进一步优化的,并且该优化是值得的。
应该不需要   
    因为优化与 cpu 的频率无关,而是与指令集和内存、 cache 有关优化时有不同的指令集,优化后的结果(程序指令集合)不同,这点应该容易理解 。而与内存和 cache (缓存)有关是因为    内存和 cache 的存储管理方面(假如是页面管理)、 初始的程序(分页)有多少页面已经存储在内存或 cache 中,这对优化很重要。   具体到存储管理系统有关
7 /有两个线程
void producer()
{
while(1)
{
GeneratePacket();
PutPacketIntoBuffer();
Signal(customer);
}
}
void customer()
{
while(1)
{
WaitForSignal();
if(PacketInBuffer>10)
{
ReadAllPackets();
ProcessPackets();
}
}
}
(1)有没有其他方法可以提高程序的性能
(2)可不可以不使用信号之类的机制来实现上述的功能
有。可以不使用 semaphore 等通信原语来完成该实现,不过还是要看 customer 运行的优先级等。
 
 
 

你可能感兴趣的:(优化,cache,Semaphore,招聘,嵌入式,Signal)