美光科技面试经验总结(2017-1-6)
总结昨天去面试美工半导体实习岗位的经验(成功)。
首先,给你一个小时做一份c语言试卷,试卷题量较适中,可以一个小时完成。
接着,是两个资深engineer拿着你的简历及做完的试卷进行面试。
主要还是介绍你简历里面做的东西,其次就是看你做的试卷成果怎么样。
再是,Manager直接过来简单面试,Manager还是很随和,人很好。
Mannager只提了简单的三个问题。
其中一个问题我没回答上来。
最后是,HR过来直接告诉我面试通过,回去发英文简历和中文简历给她,需要在美国公司那边走个流程。
接下来,就我在面试中碰到的问题,一一解答。看到的朋友可以借鉴。
一、数组和链表的区别是什么,什么时候用数组什么时候用链表?
我在网上查阅的答案如下:
相同点:都是一种数据存储结构,
不同点:
(1)从逻辑结构来讲:
1、数组必须事先定义好长度(元素的个数),不能适应数据的动态进行删除、增加操作。当数据增加时候,有可能超出数据原先定义的总长度,当数据较少时候,会引起内存浪费;数组可以根据下标进行直接存储、提取。
2、链表进行动态的存储分配,可以适应数据的动态删减操作;方便数据项的插入删除操作。(数组中插入、删除数据项时候需要移动其他数据项,非常的繁琐),链表必须根据next指针找到下一个元素。
(2)从内存存储分配来看:
数组从栈中分配存储空间,对于程序员来说,方便快速,但是自由度小;
链表是从堆中分配存储空间,自由度大,但是申请管理比较麻烦;
从上面来看,如果要快速访问数据,很少插入删除元素,就应该用数组;
如果经常插入、删除元素就需要采用链表存储结构
二、虚拟内存技术是基于什么原理?
虚拟存储器是由硬件和操作系统自动实现存储信息调度和管理的。
虚拟内存是基于信息调度的原理。
三、操作系统是通过什么来管理一个进程?
PCB(进程控制块,progress control block)
PCB是进程存在的唯一标志.
进程控制块保存进程状态、进程性质(如优先程度)、与进程有关的控制信息(如参数、信号量和消息等)、相应队列和现场保护区域等。
进程控制块随着进程的建立而产生,随着进程的完成而撤消,它是操作系统核心中最主要的数据结构之一,它既是进程存在的标志和调度的依据,
又是进程可以被打断并能恢复运行的基础。操作系统核心通过PCB管理进程,一般PCB是常驻内存的,尤其是调度信息必须常驻内存。
在操作系统中有许多进程,它们对应着不同的或相同的程序,竞争地使用着系统的资源。进程管理涉及到进程控制、队列管理和进程调度等。
进程的生命过程从它被创建时开始,直至任务终止而撤消,其间会经历各种状态的转换,它们都是在操作系统控制下完成的。操作系统提供了对进程的基本操作,也称为原语。
这些原语包括创建原语、阻塞原语、终止原语、优先级原语和调度原语。
进程调度即处理器调度,它的主要功能是确定在什么时候分派处理器,并确定分给哪一个进程。
在分时系统中,一般有一个确定的时间单位(时间片)。当一进程用完一个时间单位时,就发生进程调度,
即让正在运行的进程改变状态并转入就绪队列的队尾,再由调度原语将绪队列的首进程取出,投入运行。
进程调度的方法基本上分为两类:非剥夺调度与剥夺调度。所谓非剥夺调度是指一旦某个作业或进程占有了处理器,
别的进程就不能把处理器从这个进程手中夺走;相反,如果别的进程可将处理器从这个进程手中夺走则是剥夺调度。
进程调度的算法采用服务于系统目标的策略,对于不同的系统与系统目标,常采用不同的调度算法,如先来先服务、优先数调度和轮转法等。
四、下列指令中不会改变指令指示器IP的是(A)
A、MOV;B、JMP;C、CALL;D、RET
RET:在这里RET指令的内部操作是:栈顶字单元出栈,其值赋给IP寄存器。
即实现了一个程序的转移,将栈顶字单元保存的偏移地址作为下一条指令的偏移地址。
CALL:
常见的CPU的CALL指令(“调用”指令)的功能,就是以下两点:
(1)将下一条指令的所在地址(即当时程序计数器PC的内容)入栈,
(2)并将子程序的起始地址送入PC(于是CPU的下一条指令就会转去执行子程序JMP:跳转。
五、顺序表中插入一个元素需要移动的元素平均个数为(n+1)/2;
但是我在数据结构的结果:
删除一个元素需要移动的元素平均个数为(n-1)/2;
六、一个栈的输入序列为:a、b、c、d、e;则栈的输出序列不可能为(B、C)
栈是先进后出
A.a、b、c、d、e; (一个输入接着这个输出,是有可能的)
B.d、e、c、b、a;(这个不可能)
C.d、c、e、a、b; (这个也不可能)
D.e、d、c、b、a;(这个是可以的)
七、简述信号量的物理意义
1、系统中可用资源的数目
2、因请求该资源而阻塞的数目
信号量是通过定义好的“互斥”的变量元,来实现进程的同步.
它不但可以使进程实现互斥访问,而且还能通过信号量本身的数值来反映物理资源数或进程数,以及反映是什么操作.
一个很好的博客,但是还没来得及看,有时间认真看一下,博客地址如下:http://blog.csdn.net/wxwzy738/article/details/8063632