华为研发实习生(一面)
2016-04-18 14:53
253 查看
时间:2016-04-17
面的技术研发岗,我遇到的这个面试官人比较和蔼,没有问语言类的问题,开始做完自我介绍后,面试官让我从简历中列的项目经历中介绍一个。这个由于自己来讲,所以谈笑风生中过去了。然后面试官问的我都是一些操作系统、组成原理的东西。记录如下:
1、进程通信的方式
这个其实可以分为三个大类:管道、系统IPC(包括消息队列,信号量,共享存储)、SOCKET。
(1) 管道
1)无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
2)高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。
3)有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
(2)系统IPC
1)信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
2)消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
3)信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
4)共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
(3)套接字
套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。
2、内存页面置换算法有哪些?
自己只记得有FIFO、LRU了,还有OPT跟SCR。
算法原理稍微一回忆就想起来了,毕竟当年咱也是考408的人。贴个链接大家可以看看,就不再码字了啊。
参考:/article/8000999.html
3、大端模式跟小端模式的区别?
大端模式
所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在大端模式下,前32位应该这样读: e6 84 6c 4e ( 假设int占4个字节)
记忆方法: 地址的增长顺序与值的增长顺序相同
小端模式
所谓的小端模式(Little-endian),是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在小端模式下,前32位应该这样读: 4e 6c 84 e6( 假设int占4个字节)
记忆方法: 地址的增长顺序与值的增长顺序相反
4、cache命中率
这个我答错了,答成了内存缺页率。唉
其实这个命中率,就是当执行运算过程中,我需要数据先去cache中取,cache容量有限,可能我这次想要的数据并不在cache中,那么我需要再去主存中再取,cache命中率=(命中cache的次数)/(命中cache的次数+访问主存的次数)。
还有两个公式是求系统的平均访问时间以及访问效率。各位自行百度解决下吧。
5、快速排序算法
这个让在纸上写出伪代码,本人会写。
问完这些问题后,面试官问我有没有什么问题想问他的,我是这么说的“贵公司的技术研发岗并不像其他公司一样分有什么语言,前后台之类的。请问这个是怎么想的?”。面试官说华为招的实习生主要是看基础,要了你后会有个双向选择来定实习的方向。我想这个可能是华为这种公司跟互联网公司不一样的一个地方吧。
后记:华为更注重基础,当然项目最好也有,但不像互联网的招聘分的那么明确,也可能与我的面试官有关。总之大家要报华为的话,计算机的基础知识一定要扎实啊。
面的技术研发岗,我遇到的这个面试官人比较和蔼,没有问语言类的问题,开始做完自我介绍后,面试官让我从简历中列的项目经历中介绍一个。这个由于自己来讲,所以谈笑风生中过去了。然后面试官问的我都是一些操作系统、组成原理的东西。记录如下:
1、进程通信的方式
这个其实可以分为三个大类:管道、系统IPC(包括消息队列,信号量,共享存储)、SOCKET。
(1) 管道
1)无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
2)高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。
3)有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
(2)系统IPC
1)信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
2)消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
3)信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
4)共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
(3)套接字
套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。
2、内存页面置换算法有哪些?
自己只记得有FIFO、LRU了,还有OPT跟SCR。
算法原理稍微一回忆就想起来了,毕竟当年咱也是考408的人。贴个链接大家可以看看,就不再码字了啊。
参考:/article/8000999.html
3、大端模式跟小端模式的区别?
大端模式
所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在大端模式下,前32位应该这样读: e6 84 6c 4e ( 假设int占4个字节)
记忆方法: 地址的增长顺序与值的增长顺序相同
小端模式
所谓的小端模式(Little-endian),是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在小端模式下,前32位应该这样读: 4e 6c 84 e6( 假设int占4个字节)
记忆方法: 地址的增长顺序与值的增长顺序相反
4、cache命中率
这个我答错了,答成了内存缺页率。唉
其实这个命中率,就是当执行运算过程中,我需要数据先去cache中取,cache容量有限,可能我这次想要的数据并不在cache中,那么我需要再去主存中再取,cache命中率=(命中cache的次数)/(命中cache的次数+访问主存的次数)。
还有两个公式是求系统的平均访问时间以及访问效率。各位自行百度解决下吧。
5、快速排序算法
这个让在纸上写出伪代码,本人会写。
问完这些问题后,面试官问我有没有什么问题想问他的,我是这么说的“贵公司的技术研发岗并不像其他公司一样分有什么语言,前后台之类的。请问这个是怎么想的?”。面试官说华为招的实习生主要是看基础,要了你后会有个双向选择来定实习的方向。我想这个可能是华为这种公司跟互联网公司不一样的一个地方吧。
后记:华为更注重基础,当然项目最好也有,但不像互联网的招聘分的那么明确,也可能与我的面试官有关。总之大家要报华为的话,计算机的基础知识一定要扎实啊。
相关文章推荐
- 关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi
- 机器学习实战之k-means
- 《Spark MLlib 机器学习》勘误(持续更新)
- 标准构建
- 单链表逆序———不借助外部辅助空间递归与非递归实现
- 整理包--autopackstepCompile-UFT.bat
- 什么是内核模块
- Swift实现iOS应用中短信验证码倒计时功能的实例分享
- springmvc源码分析
- Exchange 2016集成ADRMS系列-8:创建自定义RMS模板
- Java连接hadoop注意事项及实例
- Ubuntu常用安装源
- 动态规划--最小路径和(Minimum Path Sum)
- 配置
- 组合数学中的常见定理&组合数的计算&取模
- linux shell 字符串操作(长度,查找,替换)详解
- JS运动中的部分实用函数总结
- Storm实战之WordCount
- iOS 单例模式
- js 调用方法,用ajax