锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

嵌入式C语言面试题库

时间:2022-10-11 04:00:00 正宗线绕电位器三极管2p4mbd136pnp晶体管tps5410dr集成电路ba93lc46f集成电路全n型晶体管高端电流镜

嵌入式开发—C语言面试题

  1. 预处理指令#define 声明一个常数多少秒(忽略闰年问题)
    #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
    我想看几件事:
    1). #define 语法的基本知识(如:不能以分号结束,使用括号等)
    2). 知道预处理器会为你计算常数表达值,所以直接写下你是如何计算一年中有多少秒而不是实际值的,更清晰,没有成本。
    3). 意识到这种表达式会溢出16位机的整形数——因此需要使用长整形符号L,告诉编译器这个常数是长整形数。
    4). 如果你在你的表达式中使用它UL(表示无符号长整形),所以你有一个好的起点。记住,第一印象很重要。

  2. 写标准宏MIN,这个宏输入两个参数并返回一个较小的参数。
    #define MIN(A,B) ((A) <= (B) (A) : ))

该测试是为以下目的设计的:

1). 标识#define基本知识应用于宏中。这是非常重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2). 三重条件操作符的知识。这种操作符之所以存在于C语言中,是因为它使编译器产生比例if-then-else了解更优化的代码是非常重要的。
3). 如何在宏中小心地用括号包括参数
4). 我也开始讨论宏的副作用,比如你写下面的代码会发生什么?
least = MIN(*p , b);

  1. 预处理器标识#error目的是什么?

如果你不知道答案,请参阅参考文献1。这个问题对区分一个正常的人和一个书呆子非常有用。只有书呆子才能阅读C语言教科书的附录,以找到这样的大象
问题的答案。当然,如果你不是在找书呆子,考生最好不要知道答案。

死循环(Infinite loops)

  1. 无限循环经常用于嵌入式系统。如何用C编写死循环?

这个问题有几个解决方案。我的首选是:
while(1) { }
一些程序员更喜欢以下方案:
for(;?? { }
这种实现方式让我很尴尬,因为语法没有确切地表达出来。如果考生给出这个计划,我将利用这个机会来探索他们所做的事情
基本原理。如果他们的基本答案是:我被教会这样做,但我从来没有想过为什么。这会给我留下不好的印象。
第三种方案是使用 goto
Loop:

goto Loop;
如果考生给出上述计划,这表明他是一个汇编语言程序员(这可能是一件好事)或者他想进入一个新的领域BASIC/FORTRAN程序员。

数据声明(Data declarations)

  1. 用变量a给出以下定义
    a) 一个整型数(An integer)
    b) 指向整形数的指针(A pointer to an integer)
    c) 指向指针的指针指向整形数(A pointer to a pointer to an integer)
    d) 一个数组有10个整形数(An array of 10 integers)
    e) 一个有10个指针的数组整形数(An array of 10 pointers to integers)
    f) 一个指向10个整形数组(A pointer to an array of 10 integers)
    g) 指向函数的指针有一个整形参数并返回一个整形参数(A pointer to a function that takes an integer as an argument and returns an integer)
    h) 一个有10个指针的数组指向一个函数,它有一个整形参数并返回一个整形参数( An array of ten pointers to functions that take an integer argument and return an integer )

答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer

人们经常声称这里有几个问题需要翻书才能回答,我同意。写这篇文章的时候,为了确定语法的正确性,确实查了一下书。
但当我被采访时,我希望被问到这个问题(或类似的问题)。因为在面试期间,我确信我知道这个问题的答案。如果考生不知道
所有的答案(或至少大部分答案)都没有为面试做准备。如果面试官没有为面试做准备,他为什么要准备呢?

Static

  1. 关键字static它的作用是什么?

很少有人能完全回答这个简单的问题。在C语言中,关键字static有三个明显的作用:
1). 在函数体中,声明为静态的变量在调用函数时保持其值不变。
2). 在模块中(但在函数体外),声明静态的变量可以被模块中使用的函数访问,但不能被模块外的其他函数访问。这是一个本地的全球变量。
3). 在模块中,声明为静态的函数只能被模块中的其他函数调用。也就是说,该函数仅限于声明其模块的本地范围。
大多数候选人可以正确地回答第一部分,一部分可以正确地回答第二部分,很少有人能理解第三部分。这是考生的严重缺点,因为他显然不知道本地化数据和代码范围的好处和重要性。

Const

7.关键字const是什么意思?
只要听到面试官说:我只是说:const这意味着常数,我知道我在和一个业余爱好者打交道。Dan Saks已经在他的文章里完全概括了const所有用法,所以ESP(译者:Embedded Systems Programming)每个读者都应该非常熟悉const能做什么,不能做什么.
如果你从来没有读过那篇文章,只要你能说出来const这意味着只读。虽然答案不是完整的答案,但我接受它作为正确的答案。(如果你想知道更详细的答案,请仔细阅读Saks文章。)如果考生能正确回答这个问题,我会问他一个额外的问题:下面的声明是什么意思?

const int a;
int const a;
const int *a;
int * const a;
int const * a const;

前两个的作用是一样,a是常规整形数。第三个意思是a是指向常规整形数的指针(即整形数不能修改,但指针可以)。第四个意思是a是指向整形数的常指针(即指针指向的整形数可以修改,但指针不能修改)。最后一个意思是a是指向常规整形数的常规指针(即指针指向的整形数不可修改,指针也不可修改)。如果考生能正确回答这些问题,他会给我留下好印象。顺便说一句,也许你可能会问,即使你不使用关键词 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也有以下原因:
1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const其他人很少清理程序员留下的垃圾。
2). 通过给优化器一些附加的信息,使用关键字const可能会产生更紧凑的代码。
3). 合理使用关键词const编译器可以自然地保护那些不想被改变的参数,防止它们被无意的代码修改。简而言之,这可以减少bug的出现。

Volatile

  1. 关键字volatile有什么含意 并给出三个不同的例子。

一个定义为volatile变量意味着变量可能会意外地改变,因此编译器不会假设变量的值。准确地说,优化器必须仔细重读变量值,而不是使用存储在寄存器中的备份。volatile几个变量的例子:
1). 并行设备的硬件寄存器(如状态寄存器)
2). 在中断服务子程序中访问的非自动变量(Non-automatic variables)
3). 多线程应用中多个任务共享的变量
不能回答这个问题的人不会被雇佣。我认为这是区分C程序员和嵌入式系统程序员最基本的问题。嵌入式系统程序员经常与硬件、中断、RTOS等待处理,这些都需要使用volatile变量volatile内容会带来灾难。
假设面试官正确地回答了这个问题(嗯,怀疑这否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。
1). 一个参数既可以是const还可以是volatile吗?解释为什么。
2). 一个指针可以是volatile 吗?解释为什么。
3). 下面的函数有什么错误:
int square(volatile int *ptr)
{ return ptr * ptr;
} 下面是答案:
1). 是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。
2). 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。
3). 这段代码的有个恶作剧。这段代码的目的是用来返指针
ptr指向值的平方,但是,由于
ptr指向一个volatile型参数,编译器将产生类似下面的代码:
int square(volatile int *ptr)
{ int a,b;
a = *ptr;
b = ptr;
return a * b;
} 由于
ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:
long square(volatile int *ptr)
{ int a;
a = *ptr;
return a * a;
}

位操作(Bit manipulation)

  1. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。

对这个问题有三种基本的反应
1). 不知道如何下手。该被面者从没做过任何嵌入式系统的工作。
2). 用bit fields。Bit fields是被扔到C语言死角的东西,它保证你的代码在不同编译器之间是不可移植的,同时也保证了的你的代码是不可重用的。我最近不幸看到 Infineon为其较复杂的通信芯片写的驱动程序,它用到了bit fields因此完全对我无用,因为我的编译器用其它的方式来实现bit fields的。从道德讲:永远不要让一个非嵌入式的家伙粘实际硬件的边。
3). 用 #defines 和 bit masks 操作。这是一个有极高可移植性的方法,是应该被用到的方法。最佳的解决方案如下:
#define BIT3 (0x1<<3)
static int a;
void set_bit3(void)
{ a |= BIT3;
} void clear_bit3(void)
{ a &= ~BIT3;
} 一些人喜欢为设置和清除值而定义一个掩码同时定义一些说明常数,这也是可以接受的。我希望看到几个要点:说明常数、|=和&=~操作。

  1. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。

这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:
int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa55;

一个较晦涩的方法是:
*(int * const)(0x67a9) = 0xaa55;

即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。

中断(Interrupts)

  1. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。

__interrupt double compute_area (double radius)
{ double area = PI * radius * radius;
printf(" Area = %f", area);
return area;
}

这个函数有太多的错误了,以至让人不知从何说起了:
1). ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。
2). ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。
3). 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。
4). 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。

代码例子(Code examples)
12 . 下面的代码输出是什么,为什么?

void foo(void)
{ unsigned int a = 6;
int b = -20;
(a+b > 6) puts("> 6") : puts("<= 6");
}

这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是“>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。

  1. 评价下面的代码片断:

unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
/*1’s complement of zero */

对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下:

unsigned int compzero = ~0;

这一问题真正能揭露出应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。
到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。如果显然应试者不是很好,那么这个测试就在这里结束了。但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个娱乐吧…

动态内存分配(Dynamic memory allocation)

  1. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?

这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是 P.J. Plauger, 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:下面的代码片段的输出是什么,为什么?

char *ptr;
if ((ptr = (char *)malloc(0)) == NULL)
puts(“Got a null pointer”);
else
puts(“Got a valid pointer”);

这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。

Typedef

  1. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:
    #define dPS struct s *
    typedef struct s * tPS;

以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?
这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是:typedef更好。思考下面的例子:
dPS p1,p2;
tPS p3,p4;

第一个扩展为
struct s * p1, p2;

上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。

晦涩的语法

  1. C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?
    int a = 5, b = 7, c;
    c = a+++b;

这个问题将做为这个测验的一个愉快的结尾。不管你相不相信,上面的例子是完全合乎语法的。问题是编译器如何处理它?水平不高的编译作者实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成:
c = a++ + b;
因此, 这段代码持行后a = 6, b = 7, c = 12。
如果你知道答案,或猜出正确答案,做得好。如果你不知道答案,我也不把这个当作问题。我发现这个问题的最大好处是:这是一个关于代码编写风格,代码的可读性,代码的可修改性的好的话题

What will print out?

main()
{ char *p1=“name”;
char p2;
p2=(char
)malloc(20);
memset (p2, 0, 20);
while(*p2++ = *p1++);
printf(“%sn”,p2);

}

Answer:empty string.

What will be printed as the result of the operation below:

main()
{ int x=“20”,y=35;
x=y++ + x++;
y= ++y + ++x;
printf(“%d%dn”,x,y);
}

Answer : 5794

What will be printed as the result of the operation below:

main()
{ int x=“5”;
printf(“%d,%d,%dn”,x,x< <2,x>>2);
}

Answer: 5,20,1

What will be printed as the result of the operation below:

#define swap(a,b) a=“a”+b;b=a-b;a=a-b;
void main()
{ int x=“5”, y=“10”;
swap (x,y);
printf(“%d %dn”,x,y);
swap2(x,y);
printf(“%d %dn”,x,y);
}

int swap2(int a, int b)
{ int temp;
temp=a;
b=a;
a=temp;
return 0;

}

Answer: 10, 5
10, 5

What will be printed as the result of the operation below:

main()
{ char *ptr = ” Cisco Systems”;
*ptr++; printf(“%sn”,ptr);
ptr++;
printf(“%sn”,ptr);
}

Answer:Cisco Systems
isco systems

What will be printed as the result of the operation below:

main()
{ char s1[]=“Cisco”;
char s2[]= “systems”;
printf(“%s”,s1);
} Answer: Cisco

What will be printed as the result of the operation below:

main()
{ char *p1;
char *p2;
p1=(char *)malloc(25);
p2=(char *)malloc(25);

strcpy(p1,”Cisco”);
strcpy(p2,“systems”);
strcat(p1,p2);

printf(“%s”,p1);

}

Answer: Ciscosystems

The following variable is available in file1.c, who can access it?:

static int average;

Answer: all the functions in the file1.c can access the variable.

WHat will be the result of the following code?

#define TRUE 0 // some code
while(TRUE)
{

// some code

}

Answer: This will not go into the loop as TRUE is defined as 0.

What will be printed as the result of the operation below:

int x;
int modifyvalue()
{ return(x+=10);
} int changevalue(int x)
{ return(x+=1);
}

void main()
{ int x=“10”;
x++;
changevalue(x);
x++;
modifyvalue();
printf(“First output:%dn”,x);

x++;
changevalue(x);
printf(“Second output:%dn”,x);
modifyvalue();
printf(“Third output:%dn”,x);

}

Answer: 12 , 13 , 13

What will be printed as the result of the operation below:

main()
{ int x=“10”, y=“15”;
x = x++;
y = ++y;
printf(“%d %dn”,x,y);
}

Answer: 11, 16

What will be printed as the result of the operation below:

main()
{ int a=“0”;
if(a==0)
printf(“Cisco Systemsn”);
printf(“Cisco Systemsn”);
}

Answer: Two lines with “Cisco Systems” will be printed.

再次更新C++相关题集

  1. 以下三条输出语句分别输出什么?[C易]
    char str1[] = “abc”;
    char str2[] = “abc”;
    const char str3[] = “abc”;
    const char str4[] = “abc”;
    const char* str5 = “abc”;
    const char* str6 = “abc”;
    cout << boolalpha << ( str1str2 ) << endl; // 输出什么?
    cout << boolalpha << ( str3
    str4 ) << endl; // 输出什么?
    cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?

  2. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等]
    答:
    a. class B : public A { ……} // B公有继承自A,可以是间接继承的
    b. class B { operator A( ); } // B实现了隐式转化为A的转化
    c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数
    d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个

  3. 以下代码中的两个sizeof用法有问题吗?[C易]
    void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
    { for( size_t i=“0”; i if( ‘a’<=str[i] && str[i]<=‘z’ )
    str[i] -= (‘a’-‘A’ );
    } char str[] = “aBcDe”;
    cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
    UpperCase( str );
    cout << str << endl;

  4. 以下代码有什么问题?[C难]
    void char2Hex( char c ) // 将字符以16进制表示
    { char ch = c/0x10 + ‘0’; if( ch > ‘9’ ) ch += (‘A’-‘9’-1);
    char cl = c%0x10 + ‘0’; if( cl > ‘9’ ) cl += (‘A’-‘9’-1);
    cout << ch << cl << ’ ';
    } char str[] = “I love 中国”;
    for( size_t i=“0”; i char2Hex( str[i] );
    cout << endl;

  5. 以下代码有什么问题?[C++易]
    struct Test
    { Test( int ) {}
    Test() {}
    void fun() {}
    };
    void main( void )
    { Test a(1);
    a.fun();
    Test b();
    b.fun();
    }

  6. 以下代码有什么问题?[C++易]
    cout << (true?1:“1”) << endl;

  7. 以下代码能够编译通过吗,为什么?[C++易]
    unsigned int const size1 = 2;
    char str1[ size1 ];
    unsigned int temp = 0;
    cin >> temp;
    unsigned int const size2 = temp;
    char str2[ size2 ];

  8. 以下代码中的输出语句输出0吗,为什么?[C++易]
    struct CLS
    { int m_i;
    CLS( int i ) : m_i(i) {}
    CLS()
    { CLS(0);
    } };
    CLS obj;
    cout << obj.m_i << endl;

  9. C++中的空类,默认产生哪些类成员函数?[C++易]
    答:
    class Empty
    { public:
    Empty(); // 缺省构造函数
    Empty( const Empty& ); // 拷贝构造函数
    ~Empty(); // 析构函数
    Empty& operator=( const Empty& ); // 赋值运算符
    Empty* operator&(); // 取址运算符
    const Empty* operator&() const; // 取址运算符 const
    };

  10. 以下两条输出语句分别输出什么?[C++难]
    float a = 1.0f;
    cout << (int)a << endl;
    cout << (int&)a << endl;
    cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?
    float b = 0.0f;
    cout << (int)b << endl;
    cout << (int&)b << endl;
    cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么?

  11. 以下反向遍历array数组的方法有什么错误?[STL易]
    vector array;
    array.push_back( 1 );
    array.push_back( 2 );
    array.push_back( 3 );

for( vector::size_type i=“array”.size()-1; i>=0; --i ) // 反向遍历array数组
{ cout << array[i] << endl;
}

  1. 以下代码有什么问题?[STL易]
    typedef vector IntArray;
    IntArray array;
    array.push_back( 1 );
    array.push_back( 2 );
    array.push_back( 2 );
    array.push_back( 3 );
    // 删除array数组中所有的2
    for( IntArray::iterator itor=“array”.begin(); itor!=array.end(); ++itor )
    { if( 2 == *itor ) array.erase( itor );
    }

  2. 写一个函数,完成内存之间的拷贝。[考虑问题是否全面]
    答:

void* mymemcpy( void dest, const void src, size_t count )
{
char
pdest = static_cast>( dest );
const char* psrc = static_cast( src );
if( pdest>psrc && pdest {
for( size_t i=“count-1”; i!=-1; --i )
pdest[i] = psrc[i];
}
else
{
for( size_t i=“0”; i pdest[i] = psrc[i];
}
return dest;
}
int main( void )
{
char str[] = “0123456789”;
mymemcpy( str+1, str+0, 9 );
cout << str << endl;

system( “Pause” );
return 0;
}

系统分类: 资源共享
用户分类: 电子企业面试专题
标签: 无标签
来源: 转贴
发表评论 阅读全文(1049) | 回复(1)
50
关于投票
诺基亚面试题目(电子类)
发表于 2007-1-31 20:48:33


说明:
1、笔试共分两部分:第一部分为基础篇(必答题);第二部分为专业篇(选答题)。
2、应聘芯片设计岗位的同学请以书面形式回答问题并附简历参加应聘面试。
3、如不能参加现场招聘的同学,请将简历和答卷邮寄或发e-mail的形式(请注明应聘标题)给我们,以便我们对您作出客观、全面的评价。


第一部分: 基础篇
(该部分共有试题8题,为必答题,每位应聘者按自己对问题的理解去回答,尽可能多回答你所知道的内容。若不清楚就写不清楚)。

1、我们公司的产品是集成电路,请描述一下你对集成电路的认识,列举一些与集成电路相关的内容(如讲清楚模拟、数字、双极型、CMOS、MCU、RISC、CISC、DSP、ASIC、FPGA等的概念)。

2、你认为你从事研发工作有哪些特点?

3、基尔霍夫定理的内容是什么?

4、描述你对集成电路设计流程的认识。

5、描述你对集成电路工艺的认识。

6、你知道的集成电路设计的表达方式有哪几种?

7、描述一个交通信号灯的设计。

8、我们将研发人员分为若干研究方向,对协议和算法理解(主要应用在网络通信、图象语音压缩方面)、电子系统方案的研究、用MCU、DSP编程实现电路功能、用ASIC设计技术设计电路(包括MCU、DSP本身)、电路功能模块设计(包括模拟电路和数字电路)、集成电路后端设计(主要是指综合及自动布局布线技术)、集成电路设计与工艺接口的研究。
你希望从事哪方面的研究?(可以选择多个方向。另外,已经从事过相关研发的人员可以详细描述你的研发经历)。

第二部分: 专业篇
(根据你选择的方向回答以下你认为相关的专业篇的问题。一般情况下你只需要回答五道题以上,但请尽可能多回答你所知道的,以便我们了解你的知识结构及技术特点。)

1、请谈谈对一个系统设计的总体思路。针对这个思路,你觉得应该具备哪些方面的知识?

2、现有一用户需要一种集成电路产品,要求该产品能够实现如下功能:y=lnx,其中,x为4位二进制整数输入信号。y为二进制小数输出,要求保留两位小数。电源电压为3~5v假设公司接到该项目后,交由你来负责该产品的设计,试讨论该产品的设计全程。

3、简单描述一个单片机系统的主要组成模块,并说明各模块之间的数据流流向和控制流流向。简述单片机应用系统的设计原则。

4、请用方框图描述一个你熟悉的实用数字信号处理系统,并做简要的分析;如果没有,也可以自己设计一个简单的数字信号处理系统,并描述其功能及用途。

5、画出8031与2716(2K*8ROM)的连线图,要求采用三-八译码器,8031的P2.5,P2.4和P2.3参加译码,基本地址范围为3000H-3FFFH。该2716有没有重叠地址?根据是什么?若有,则写出每片2716的重叠地址范围。

6、用8051设计一个带一个8*16键盘加驱动八个数码管(共阳)的原理图。

7、PCI总线的含义是什么?PCI总线的主要特点是什么?

8、请简要描述HUFFMAN编码的基本原理及其基本的实现方法。

9、说出OSI七层网络协议中的四层(任意四层)。

10、中断的概念?简述中断的过程。

11、说说对数字逻辑中的竞争和冒险的理解,并举例说明竞争和冒险怎样消除。

12、要用一个开环脉冲调速系统来控制直流电动机的转速,程序由8051完成。简单原理如下:由P3.4输出脉冲的占空比来控制转速,占空比越大,转速越快;而占空比由K7-K0八个开关来设置,直接与P1口相连(开关拨到下方时为"0",拨到上方时为"1",组成一个八位二进制数N),要求占空比为 N/256。
  下面程序用计数法来实现这一功能,请将空余部分添完整。

MOV P1,#0FFH
   LOOP1 :MOV R4,#0FFH
   --------
   MOV R3,#00H
   LOOP2 :MOV A,P1
   --------
   SUBB A,R3
   JNZ SKP1
   --------
   SKP1:MOV C,70H
   MOV P3.4,C
   ACALL DELAY :此延时子程序略
   --------
   --------
   AJMP LOOP1

13、用你熟悉的设计方式设计一个可预置初值的7进制循环计数器,15进制的呢?

14、请用HDL描述四位的全加法器、5分频电路。

15、简述FPGA等可编程逻辑器件设计流程。

16、同步电路和异步电路的区别是什么?

17、电压源、电流源是集成电路中经常用到的模块,请画出你知道的线路结构,简单描述其优缺点。

18、描述反馈电路的概念,列举他们的应用。19、放大电路的频率补偿的目的是什么,有哪些方法?

20、画出CMOS电路的晶体管级电路图,实现Y=A.B+C(D+E)

21、请分析如下电路所实现的功能。

22、A)
  #i nclude
  void testf(int*p)
  {
  *p+=1;
  }
  main()
  {
  int *n,m[2];
  n=m;
  m[0]=1;
  m[1]=8;
  testf(n);
  printf("Data value is %d “,*n);
  }
  ------------------------------
  B)
  #i nclude
  void testf(int**p)
  {
  *p+=1;
  }
  main()
  {int *n,m[2];
  n=m;
  m[0]=1;
  m[1]=8;
  testf(&n);
  printf(Data value is %d”,*n);
  }
  下面的结果是程序A还是程序B的?
  Data value is 8
  那么另一段程序的结果是什么?

23、用简单电路实现,当A为输入时,输出B波形为:A: B:
24、LC正弦波振荡器有哪几种三点式振荡电路,分别画出其原理图。
25、相环有哪几部分组成?
26、人的话音频率一般为300~3400HZ,若对其采样且使信号不失真,其最小的采样频率应为多大?若采用8KHZ的采样频率,并采用8bit的PCM编码,则存储一秒钟的信号数据量有多大?
27、在CMOS电路中,要有一个单管作为开关管精确传递模拟低电平,这个单管你会用P管还是N管,为什么?
28、画出由运放构成加法、减法、微分、积分运算的电路原理图。并画出一个晶体管级的运放电路。
29、数字滤波器的分类和结构特点。
30、DAC和ADC的实现各有哪些方法?
31、描述CMOS电路中闩锁效应产生的过程及最后的结果?
32、什么叫做OTP片、掩膜片,两者的区别何在?
33、列举几种集成电路典型工艺。工艺上常提到0.25,0.18指的是什么?
34、请描述一下国内的工艺现状。
35、请简述一下设计后端的整个流程?
36、有否接触过自动布局布线?请说出一两种工具软件。自动布局布线需要哪些基本元素?
37、半导体工艺中,掺杂有哪几种方式?
38、什么是NMOS、PMOS、CMOS?什么是增强型、耗尽型?什么是PNP、NPN?他们有什么差别?
39、为什么一个标准的倒相器中P管的宽长比要比N管的宽长比大?
40、硅栅COMS工艺中N阱中做的是P管还是N管,N阱的阱电位的连接有什么要求?

汉王笔试
1、下面是一些基本的数字电路知识问题,请简要回答之。
a) 什么是Setup 和Holdup时间?

  Setup/hold time 是测试芯片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间-Setup time。如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。
  保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果holdtime不够,数据同样不能被打入触发器。

b) 什么是竞争与冒险现象?怎样判断?如何消除?
c) 请画出用D触发器实现2倍分频的逻辑电路?
d) 什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?
e) 什么是同步逻辑和异步逻辑?
f) 请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接口、所存器/缓冲器)。
g) 你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗?
2、 可编程逻辑器件在现代电子设计中越来越重要,请问:
a) 你所知道的可编程逻辑器件有哪些?
b) 试用VHDL或VERILOG、ABLE描述8位D触发器逻辑。
3、设想你将设计完成一个电子电路方案。请简述用EDA软件(如PROTEL)进行设计(包括原理图和PCB图)到调试出样机的整个过程。在各环节应注意哪些问题?

飞利浦-大唐笔试
1、用逻辑们和cmos电路实现ab+cd
2、用一个二选一mux和一个inv实现异或
3、给了reg的setup,hold时间,求中间组合逻辑的delay范围。
4. 如何解决亚稳态
5. 用verilog/vhdl写一个fifo控制器
6. 用verilog/vddl检测stream中的特定字符串

信威dsp软件面试题
1)DSP和通用处理器在结构上有什么不同,请简要画出你熟悉的一种DSP结构图
2)说说定点DSP和浮点DSP的定义(或者说出他们的区别)
3)说说你对循环寻址和位反序寻址的理解
4)请写出【-8,7】的二进制补码,和二进制偏置码。用Q15表示出0.5和-0.5

扬智电子笔试
第一题:用mos管搭出一个二输入与非门。
第二题:集成电路前段设计流程,写出相关的工具。
第三题:名词IRQ,BIOS,USB,VHDL,SDR
第四题:unix 命令cp -r, rm,uname
第五题:用波形表示D触发器的功能
第六题:写异步D触发器的verilog module
第七题:What is PC Chipset?
第八题:用传输门和倒向器搭一个边沿触发器
第九题:画状态机,接受1,2,5分钱的卖报机,每份报纸5分钱。

华为面试题
研发(硬件)
全都是几本模电数电信号单片机题目
1.用与非门等设计全加法器
2.给出两个门电路让你分析异同
3.名词:sram,ssram,sdram
4.信号与系统:在时域与频域关系
5.信号与系统:和4题差不多
6.晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期…)
7.串行通信与同步通信异同,特点,比较
8.RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?)
9.延时问题,判错
10.史密斯特电路,求回差电压
11.VCO是什么,什么参数(压控振荡器?)
12. 用D触发器做个二分颦的电路.又问什么是状态图
13. 什么耐奎斯特定律,怎么由模拟信号转为数字信号
14. 用D触发器做个4进制的计数
15.那种排序方法最快?
16.时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min。组合逻辑电路最大延
迟为T2max,最小为T2min。问,触发器D2的建立时间T3和保持时间应满足什么条件。

研发(软件)
用C语言写一个递归算法求N!;
给一个C的函数,关于字符串和数组,找出错误;
防火墙是怎么实现的?
你对哪方面编程熟悉?

新太硬件
(1)d触发器和d锁存器的区别
(2)有源滤波器和无源滤波器的原理及区别
(3)sram,falsh memory,及dram的区别?
(4)iir,fir滤波器的异同
(5)冒泡排序的原理
(6)操作系统的功能
(7)学过的计算机语言及开发的系统
(8)拉氏变换和傅立叶变换的表达式及联系。
系统分类: 自由话题
用户分类: 电子企业面试专题
标签: 诺基亚面试题目
来源: 转贴
发表评论 阅读全文(6493) | 回复(10)
0
关于投票
苏州飞思卡尔面试经过
发表于 2007-1-31 20:46:26
它是我面试最爽的一个公司,那天晚上我和gyw去参加他的宣讲会,害怕交大不让早进,我们还特意晚去了10几分,没看见前面
的宣传片很可惜。宣讲会讲了2个小时,开场由hr简单介绍公司情况,随后由一个自身的工程师讲了很久,听得我都快睡着了。不过
马上又上来了一个帅外国人,他是负责天津的。他的英语英语发音很标准,我基本都能听都,这时大家都很静,仔细听他讲,最后
我又投了简历,虽然已经网投了,但是为了保险,不就多一张纸吗,呵呵。他们说晚上12点收不到电话通知面试就没戏了。
晚上我等到了12点,竟然没电话,没机会了,故而睡之。没想到12点半,电话吵醒了我,fsl的面试电话,通知明天下午2点面试。
我简直兴奋极了,好久都没睡着。到了第二天,问了其他人才知道只有我让去面试了,虽然下午面试,感觉排到后面就没机会,
我可要珍惜这珍贵的机会,因为我相信只要努力就有机会。下午到了交大,看到登记表上竟然面试的人才20人左右,我觉得我
能去面试时很大的luck呀。在外面等了会,有人叫我进去,第一面见了个jj,她很干练,也比较有气质,起初以为是技术manager,
后来问了fsl里的人才知道,她是hr manager,知到后非常佩服fsl,它们的hr都懂这么多技术。她对我说的第一句话就是“看了你
的简历,觉得你是最适合我们的人”,但是很高兴,就先作了自我介绍,讲了教育背景和项目经历,这时她也看了我的简历。完了
后她问了很多项目的问题,还有时序、综合、asic设计流程、低功耗、验证等多方面的知识,由构架问到细节,自我感觉打得很不
错,很少打板子,当然也有不会的,毕竟学校条件差,很多还没接触过。所以我就虚心和她交流,她也仔细得给我讲,感觉受益匪浅。
然后我们又聊了我在学校的学习和生活,后面节奏基本由我控制了,聊得谈笑风生,感觉很好。1小时后,她说我这边没问题,很希
望我去fsl,还说了他们的offer给得很晚(12月中旬),希望我耐心等,我也说了我的难处,然后让我出去等下一个manager的面试,
我说4点还要去hw3面,希望他们能面试快点,她就笑着答应我,放心马上安排你面试。我刚出去就有被叫了进来,这次是一个很沉稳的gg,
他说话很稳重,也是让我最我介绍,随后问了些项目的问题,我这时已经进入状态,说起话来也很振奋。她对我的印象也很好,一直在劝
我耐心等offer,最后握手分别。面试完后,我就兴致勃勃的去做402到高新面hw3面。
过了5天,我就有收到苏州那个2面经理的电话confirm,到了12月就顺利拿到offer。
整体感觉,面fsl要知识面广点、对自己的课题要很熟悉,而且你的态度要非常自信+aggressive。这样才有可能。

系统分类: 自由话题
用户分类: 电子企业面试专题
标签: 面试
来源: 转贴
发表评论 阅读全文(2552) | 回复(6)
1
关于投票
面试威盛(转载)
发表于 2007-1-13 23:16:00
面试威盛–2002年1月29号 By totty

声明:以下的所有言论仅仅基于个人经历,本人尽力记录真实发生的一切,但可能因记
忆不准确会和真实情况有所差别,对此,作者并不负责。另外,本人的经历可能并不具
有代表性,请切记。未经作者同意不许转载,否则所引起的一切后果自负。

威盛电子(www.viatech.com)是一家台湾的微电子企业。昨天下午接到一个电话,电话
里有一个甜甜的声音说是看到我网上的简历了,希望我去面试一下。既然面试,那就面
试吧,没什么大不了的,正好也有其它事情要到上地去一趟,于是就开始了下午的这个
故事:

预约的时间本来是下午1点,但据说是因为上午出车祸了,而且正好是修路,所以从中关
村到上地的那条路一直堵着,走走停停,到上地七街都已是12:50了。又因为不晓得得实
大厦到底是在马路的哪边,在路口转了一个圈,问了一个骑三轮车的大哥才找到那栋楼
的后门。外面的阳光很好,但风非常大,吹得人很不爽,绕着楼走了一圈,才找到正门

到了via的门口,前台小姐让我先填一张表,虽然仅仅是一页纸,但这表也可谓是中西合
壁了,既有“你妈贵姓?”的问题,也有“请提供你的推荐人”之类的东东。偶大致将
就着填了,也跳过若干无关问题。把表再交回给前台小姐后,偶傻傻的在那个小黑房子
里面坐了十几分钟。然后就开始了今天的面试。

(房子外远远的走来一位先生,渐渐的看清是直奔偶过来的。偶起身,拉开门。)
偶(以下简称为o):你好。
奈(以下简称为n):你好。你是…XXX?(坐下)
o:是的。(也坐下)
…(n简要的问了些教育背景,经历啦什么的,o也简要回答了些,略去)
n:我看到你预定的论文题目是《》,能不能介绍一下你在这方面的工作?
o:好的。(画了很多图,大概说明了一下做的东西,但n先生可能不是很明白,我后来
才知道,因为这都是模拟电路设计方面的,呵呵)。

n:你提到采样速率是信号带宽的两倍就一定能够还原这个信号,能不能证明一下?
o:(//faint,so easy)当然可以,这是信号与系统的基本常识了。画图就可以很明显的
看出了(画图证明之)。

n:在你的设计中,应该遇到很多trade-off,ok?你能不能介绍一下你碰见了哪些trad
e-off以及你是如何解决的呢?
o:当然有了,(//Thinking),首先这整个design的architecture就是一个大的trade
-off的结果,然后设计中许多电路结构的选择也是tradeoff的结果。(解释如何的trad
e-off)

n:ok,你在这张表上的应聘职位没有填写,你大概希望从事什么方向的工作?
o:哦,是这样的,我是昨天下午接到您公司人事部门的面试通知的。他们是通过51job
网站得到我的简历,因此我现在还不知道贵公司希望我从事的方向。
n:我主要是负责logic design方面的,我们主要是招聘logic design engineer。ok,
我想知道你的working expectation。
o:(//ft again,早说啊,早说我不就和你侃logic design了么?呵呵)在我pub的简历
上提到的工作预期…预.期.(ok?)是模拟电路ananlog circuit design Engineer和数字
design方面的project manager.
n:(//吃惊)project manager? no,no,我们这里现在没有project manager的职位。
我们现在需要的是logic design engineer。
o:哦。
n:(//smile)当然,我很高兴你有这个ambition希望做project manager。但我们这里的
工作也是不可能提供project manager的职位的,因为我们这里的project需要的知识在
学校里面是完全学习不到的。就是我们刚招聘进来的XXX Dr.在XX大学工作了n年,也是
从头坐起,每个人的起点都是一样的。
o:(//失望),哦。但也未必吧,学校和学校是不一样的(反击)。在数字设计方面我也
做过几个不大的项目,对于这方面,偶也是很熟悉的。
n:那么你对logic design engineer的职位还有兴趣吗?
o:(//Thinking)我觉得这也是一种选择,如果合适,我想还是会接受这样的工作的。但
是我希望能够详细了解一下你们的project具体的内容,以及作为一个logic desing en
gineer在具体的project中从事的任务。还有,我想知道在您公司里面,一个典型的pro
ject是如何管理的,而作为一个design engineer在公司中,又是如何表现自己并成长的
呢?我想这些信息对我的决定也有所影响。
n:ok。我们的logic设计主要是XXX方面的,在这方面我们有三个小组,usa,tw,和北
京。
o:(//打断)对不起,我打断一下,我想问问您的logic设计小组一共有多少人,现在有
多少和计划最终有多少人?
n:我们在beijing的team大概有20几人左右,我们到今年年底可能会扩到30~40人。因为
tw和usa的小组力量比较weak,也就是人比较少,所有有一些工作要beijing的eng和他们
一起完成。
o:明白了。那您在北京rd部门的员工主要是从事什么样的工作呢?
n:我们的工作主要是(??一个什么bus吧,听得不是很清楚)的Application的设计。刚
进来的员工首先是需要read documentation和protocal,撰写??list。
o:??list?
n:就是接口的规范,(例如接口的信号、时序等等接口规范)。阅读文档后需要写出硬
件的接口描述,这样,才能够进行整体的model。在一个project中,阅读doc和撰写??l
ist后,eng就应该比较了解它们的了。然后就可以进行一些app的设计…(以下具体
不详,大致是介绍via的logic设计中的一个典型project流程)。我们的team一般在完成
一个project之前会有另外的project在(排队)的,所以会比较的tough。
o:(//smile)随便问问,你们project中的小组成员经常加班吗?
n:我们logic小组的人都是很(niu)的人,在招聘员工上我们宁缺毋滥。我们的小组中既
会非常的cooperative,也会非常的competetive,有。在这样的小组中,我想你是可以
学到很多的东西的。可以学到很多在学校里接触不到的东西。
o:那当然,工作和学习是不一样的。我的工作经历也教会过了我很多事情。(提醒n先
生不要同一化偶)出于对个人发展的考虑,我当然也希望能够在一个地方学习很多的新
东西。
n:在我们这里logic design方面的工作不光需要有硬件设计的背景,也需要软体softw
are的background。我们招了几个XX大学的CS的。你们学过Computer Arch吗?
o:(//node),当然。我们还学过
(计算机方面的一些课程)。
n:那么熟悉内存管理吗?
o:知道一些东西,因为在课程XXXX里面有很详细的说明。偶做过的课程设计里面包括了
一个os的进程管理、文件、内存和其他资源的一个简单系统。(其实早忘记了,多少年
前的课程了啊?呵呵)
n:那么在内存分配方面有几中算法呢?
o:应该有很多种,看不同的系统需要了,例如贪.心.算法,…
n:内存的fragment回收你知道吗?能不能介绍一下?
o:当然,其实内存的gragment回收和磁盘disk的fragment recover是一样的,或者是类
似的。(想了一想windows的磁盘清理工具的运行图)内存的fragment recoverage就是

n:ok,你做过数字方面的设计,可以具体的介绍一下吗?
o:当然。偶做过XX,万std_cell的一个设计,XX,万std_cell的一个设计, 和万std_
cell的一个设计。
n:你主要是负责什么呢?
o:综合和综合后的后端流程和验证。
n:验证?你们是如何验证你的design的?
o:后端设计主要就是时序验证啊,通过版图可以得到design的时间延迟信息。
n:sdf?你是用什么工具做的呢?
o:(这也用问)我们使用的是XXX公司的XXX,XXX,XXX等软件。同时我也熟悉使用XXX…

n:时序验证是static timing analysis吗?
o:当然了,我只能做到这一步,在不知道具体的设计描述的情况下,我只能通过这样验
证设计啊?我们用的是
*Time进行时序分析…
n:那在你的设计中用了latch了没有?
o:考虑使用latch过,在我们后来的版本中,使用latch。但是在教科书中的建议是在设
计中尽量避免使用latch。
n:是的,但是不用latch是不可能实现高速的设计的。那么你知道time borrowing的概
念吗?能不能给我解释一下?
o:(解释time borrowing…)
n:ok,你还有什么问题要问我的吗?
o:想了半天,没有。
n:那好。你给我的感觉是有点过于自信。(o nod)但是,我想我是会给你offer的。你
在这里等一会,一会人事经理会和你面谈的。
o:好的。


以下和他们的hr经理(Wang XX)的谈话略去。总体感觉是不太好,个人以为via对大陆学
生还是有许多的偏见和歧视的。在他们的谈话中不会说出,但是可以感觉得到,我很不
喜欢这种隐隐流露出的歧视和偏见(或许也可能是因为我太敏感了吧?但我不喜欢,所以
我也不会接受)。这次面试的结局是今天收到了via的拒信,原因是他们的这种偏见有些
激怒了我,从而在我和他们的人事经理讨论问题时在一些地方产生争执并让双方感觉不
太爽。

如果仅就面试而言,我后来和hr manager的很多言论和行为是多余和愚蠢的。但是我并
不认为这种错误是我的失败,呵呵,我觉得是他们的失败,我们得教教他们一些我们的
文化。当然,每次经历必然也会带来很多的经验的,我的经验如下:

结论:
1、对于via中我所了解的logic设计部门来讲,他们的设计方法和设计流程对于国内的很
多数字设计house来讲要正规很多。客观来说,在这里也是可以学习到一些设计方法和许
多pc/io的原理性知识的,但方向也的确是非常的狭窄。
2、via给出的薪酬水平是很低的,我所了解(wang xx说的)典型的80%的员工(硕士毕
业生)税前工资是7000,也就是说,税后工资是5300左右(以北京的税收政策为例)。

3、台湾公司对大陆员工有一些偏见(文化的偏见?很奇怪)包括薪水和职位的偏见(或
者是歧视)。在via这个非常典型的台湾公司中,表现得尤为明显,甚至可能有技术上的
歧视(作者猜测)。在面试中不论是和技术人员交谈还是和管理人员交谈,我都屡次感
觉到这种歧视和偏见的存在并试图反击,最后以失败告终,呵呵,但也很爽。

系统分类: 自由话题
用户分类: 电子企业面试专题
标签: 面试
来源: 转贴
发表评论 阅读全文(608) | 回复(0)
1
关于投票
我的面试经历(微电子)
发表于 2007-1-13 23:14:35
下午就要签约了,上午一个人在教研室整理了一下这段时间的生活,发觉还是有很多收
获的。
这期间经历过一些公司,有过一些感受,在这里记载下来,也算为师弟师妹们做个参考

准确的说我的求职过程应该从今年9月28号开始算起,到现在已经是两个多月过去了。
第一次面试,呵呵,其实我一直都不把它当作一次面试的,
是9月28号在宁波人才交流会上。提到宁波人才交流会,我想多说两句。
每年九月份或者十月份,宁波都会举办一次所谓的万人交流会,就是由宁波出车费,
请全国各著名高校(今年大概有二十多所吧)到宁波参加两天左右的人才交流。
实际上就我所知,高校去的人有百分之七十以上都是抱着有人给车费,
顺便去那边旅游的心理过去的,实际效果可想而知。
我早上去了会场,找老师报了道,因为事先安排的是下午到上海,上午没事就和舍友在
会场里面顺便逛了逛
呵呵,没想到还真碰到两个招微电子的公司。一个是宁波立立电子,另一个就是中纬积
体电路。
前者,我投了简历,一位老总和我聊了会,然后还很时髦的用e文和我交谈,大庭广众,

就我那磕磕巴巴的e文,真是非常尴尬,不过好在那位老总e文也很粑,总算糊弄过去了

后来听舍友说,他与老总英文交流以后,老总对交大学生的评价是e文不错,呵呵,当时
听了真是寒啊。
另一个中纬积体就不这么给面子了,一位还挺pp的mm只是用眼角扫了一眼我的简历,
直接就退回来了,说他们不招设计的。呵呵,这该是我收到的第一份拒信吧。
结果:宁波立立电子要我去工厂干上一年,美其名曰:基层锻炼。呵呵
第二次面试就到了10月6号了,地点是西安喜来登饭店,
我发觉好多公司到西安都是去喜来登,可能是世界连锁的原因。
坐了近一个小时的公共汽车,好不容易到了面试房间。
面试官是普诚科技的黄总,普诚科技的母公司是台湾的prinston,
老实说以前并没有听说过,普诚科技是今年才在深圳成立的子公司。
因为他们是今年在交大bbs上面最早出现的公司,所以就去了。
面试过程中,一个技术问题没有问,就大体谈了谈自己做过的课题。
黄总问得最多的话该是,你做了这么多数字的工作转模拟你愿意吗?
呵呵,我当然不愿意,不过还是很勉强的说,其实我也挺喜欢模拟的。
后来的结果证明了面试官还真的是有火眼睛睛的,我直接被bs了。
结论:千万别为了得到一个工作而去迎合任何人,特别是违心的迎合。
普诚事件以后好长时间都没有公司过来,我也就安心的工作了二十来天。
不过期间在网上投过两三分简历,其中一份带来了另外一次机会,这是后话了,后面会
提到。
第三次面试时间是11月6号,地点是交大南洋大酒店,面试公司就是今天下午就将和我签
约的苏州瑞晟。
当然面试官就是早就如雷贯耳的郭经理了,呵呵,马上就是我的上司了,我是不敢直呼
其名了。
因为早就听过以前师兄们面试的艰辛历程,所以我也算是早做准备。
面试过程比我想象中来得随和,平静。刚开始,就是问课题情况,不过,问得十分细致

每一个接口信号流向,来源,适应情况都无一遗漏。
接下来就是即兴题目,我做的只是一个数字电路的组合逻辑题。
入手处很easy,但随着不断的深入,不断地增加条件,我的头也是越来越大。
整个过程我被卡住过一次,想了两分钟还是不知道怎么办,只好告诉面试官我不会。
瑞晟面试过程中最好的地方就是一个交流的过程,不会的时候,面试官会提醒你,
然后你继续往下做,直到共同完成这道题。我感觉这些题完全是即兴出的,因为在我解
题过程中,
很多时候面试官也不知道答案,他也是一步一步推下去的。
结论:瑞晟面试一定要对自己的课题极为熟悉,千万别想着敷衍过去。
再有就是重视基础,包括一些必要的器件知识。
因为在最后我还被问道body effect的问题,问题不是直接问,是变着花样问,
所以深入吃透物理原理很重要。
面试了瑞晟,过了几天瑞晟的兄弟公司炬力也过来了,炬力要先通过笔试,然后才参加
面试。
我记得面试那天是11月11号,地点还是南洋大酒店。
面试中,面试官和我主要是针对笔试中的题目完成情况进行了讨论。
顺带的他问了问课题上的情况,不过问得不如 痍上晗 ,只需要大致说说就可以了。
炬力面试还有一个最重要目的就是要了解被面试者是否愿意立即和他们签约。
因为他们在来学校以前都会事先找已经在他们公司工作的师兄师姐摸底,
而且事先他们也会借着到交大来检查三楼联合实验室成员工作情况的机会,向老师们了
解将毕业学生的详细情况。
所以他们对系里面的学生的情况应该是比较了解的。所以只要参加了面试,他们都会直
接要求马上签约。
这也为师弟师妹们提个醒:如果有人有兴趣去炬力工作的话,不妨事先联络一下已经在
炬力工作的师兄师姐们。
老实说,除了珠海地方不是太好以外,其他任何方面炬力在国内都算是比较好的公司了
,而且对交大学生特别客气。
另外还要提一下炬力的笔试题目:做ic方面的话,研究生题目包括很杂,
今年既有管子级电路功能的识别,又有两道写代码的题(包括三、五分频、和一个类似
于选择译码器的题)
还有两道模拟电路的题,一个电流镜应用方面的,和一个放大器方面的。
上面提到了我在网上投过几分简历,其中一份就是给威盛的。当然我也就收到了威盛的
笔试通知。
我投的是logic,笔试题目在bbs上面可以找到我也就不多说了。
我说说面试过程,VIA的面试分三轮,两轮技术面试,一轮人力资源面试。采用类似于p
ipeline方式进行。
第一个面试官,是一位刚从
美国赶过来的台湾人。国语不是很好,面试过程中常用e文。

刚开始是问课题方面的问题,看我比较熟练,说了两分钟,他就换了话题。
开始问一个类似于交通灯的题目,不过不像我们普通碰到的交通灯,问题方式和瑞晟十
分类似,
逐步深入,状态机从两个到四个,再到八个,再加各种条件。
幸运的是,这次我没有卡壳,面试过程进行得比较顺利,
半个小时左右他就让我去二面房间了。
二面的是一个刚从台湾赶过来的更纯的台湾人,这个台湾人比较傲慢,眼睛盯着电脑,
不用抬头,就直接发问。
问题倒是挺简单,一个是关于cache的理解,再一个是关于时钟树方面的问题,最后还问
了一个极为easy的iq题。
呵呵,当时我就告诉他,这个题到处都能找到,
不过台湾人坚持说他就想看看我的思维过程。
呵呵,答案都知道,这还用说,当然是非常敏捷了。
末了,就该是三面了,是一个人力资源部的女士做的面试官。
三面气氛非常轻松,因为她刚好是绵阳人,我们算是老乡

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章