概要:A选项的优化只能针对代码本身,纯系统调用什么的是不会性能提升的(当然也不会下降),B选项我觉得是在并行优化方面,好的编译器可以从循环中发掘并行性,展开之后就不行了,C选项有点说不清。消除数据依赖主要有两个方法,一种是SSA,即静态单赋值,这是通过对变量进行重命名实现的,严格的说应该叫“寄存器重命名”而不是“寄存器分配”;另外一种是调换指令顺序,这种只要不是真相关(写后读,RAW)的话都可以消除掉,也不属于寄存器分配。所以感觉不应该选这个。1.10 B求最大公约数用的是辗转相除法(欧几里得算法),所以是O(logn)。2.1这题比较基本,而且很多企业的笔试都爱考类似的。主要就是对尝试对数a进行质因数分解,最容易写的就是从2开始一直除到sqrt(a),性能提升一点就从2,3然后除奇数一直到sqrt(a)。当然还可以优化一下,建立一个动态质数链表,将之前取到的所有质数加入表进行加速。2.2这题我觉得除了重载一下swap函数然后用传统排序法之外也想不出什么高效的做法了。而且要代码实现,时间紧迫也不由得你多想。2.3这题个人觉得
google2017校园招聘笔试题,标签:笔试大全,http://www.88haoxue.comA选项的优化只能针对代码本身,纯系统调用什么的是不会性能提升的(当然也不会下降),
B选项我觉得是在并行优化方面,好的编译器可以从循环中发掘并行性,展开之后就不行了,
C选项有点说不清。消除数据依赖主要有两个方法,一种是SSA,即静态单赋值,这是通过对变量进行重命名实现的,严格的说应该叫“寄存器重命名”而不是“寄存器分配”;另外一种是调换指令顺序,这种只要不是真相关(写后读,RAW)的话都可以消除掉,也不属于寄存器分配。所以感觉不应该选这个。
1.10 B
求最大公约数用的是辗转相除法(欧几里得算法),所以是O(logn)。
2.1
这题比较基本,而且很多企业的笔试都爱考类似的。主要就是对尝试对数a进行质因数分解,最容易写的就是从2开始一直除到sqrt(a),性能提升一点就从2,3然后除奇数一直到sqrt(a)。当然还可以优化一下,建立一个动态质数链表,将之前取到的所有质数加入表进行加速。
2.2
这题我觉得除了重载一下swap函数然后用传统排序法之外也想不出什么高效的做法了。而且要代码实现,时间紧迫也不由得你多想。
2.3
这题个人觉得是这场笔试唯一拉分的题了,基于动态规划算法。事实上就是写出LD算法的伪代码。
【小编推荐笔试题目】
Google笔试题目推荐
Google计算机类笔试题
微软亚洲技术中心笔试题
微软笔试题精解
腾讯笔试题目,绝对有用
上一篇:2017年人人校园招聘笔试题
最新更新