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

来源:互联网 发布:杜蕾斯凸点螺纹 知乎 编辑:程序博客网 时间:2024/04/29 17:48
 

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

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

分类: 找工作历程 1709人阅读 评论(0) 收藏 举报
招聘优化semaphore嵌入式signalcache

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+bb+a
的精度是等效的,而(a+b)作为一个整体,相对于ab会丢失精度。
从而,(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-endiana是最低3位,b是中间2位,c是最高三位
0x99的二进制是10011001
所以a=001b=11c=100
因为int是有符号的,所以a=1,b的符号位是1,所以是补码,-1取反得原码就是1,所以是
-1c的符号位也是1,但是补码是00,所以代表-4。。。

 

发信人: legenderic (eric), 信区: job
标 题: intel lab 复旦的笔试题
发信站: 饮水思源 (2003年11月07日20: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)前面,因为T2T4的值是确定的
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运行的优先级等。
0 0