AMD中秋节笔试题目
首先,题目都是全英的。这个确实读题会慢一些,单词基本都认识,不认识的基本都可以猜出来,最大的影响可能是读题慢一点。包含15道选择题(10个单选,5个多选),2道编程题。
选择题都比较常规的,都是一些基础的知识,现在还记得有:
- 一个是关于LSB(字节意思感觉是最低有效位的一个判断,也是属于C语言位运算的一个题目)
- 一个是关于动态链接库的,有一些选项,判断对错。
- 还有一个是关于C语言计算优先级的,核心是()、*、%、+等优先级顺序。
- 还有两道关于进程和线程的题目。
编程第一题:
一个32位的无符号整数,请帮助它交换其二进制位,将第0位和第31位交换,将第1位和第30位交换,以此类型,直到交换其第15位和第16位。
#include <stdlib.h> #include <stdio.h> #include <math.h> // 核心是采取移位的方法,我记得也可以通过计算的方式来实现,具体可自行百度 unsigned int reserve_bit(unsigned int num) { unsigned int ret = 0; int bit = 0; int i = 0; // 遍历原始数的每一位 for (i = 0; i < 32; i++) { // 每一次先往结果中移位一个二进制的1,那么移位32次就可以构造出结果了 ret <<= 1; // 提取出来原始数的当前位(按位与提取) bit = num & 1; // 将结果的当前位计算出来 ret = bit | ret; // 将原始数右移移位(丢掉一个低位) num = num / 2; } return ret; }
方法的核心是一次将num的最低位写到ret中,然后将ret左移,再计算,再左移。
编程第二题:
给定两个不超过一百个元素的整型数组,请帮助找到一个整数,该整数不在这两个数组中。
这个没有代码,emmmm,这个我直接return 100,就ac了........
经过是这样的:我写的是将两个数组排序,然后去重并合并这两个有序数组,之后再从1遍历到其最大值,将找到的第一个返回,但是我自己写的函数,我准备看看去重合并的效果咋样,发现调试有问题,自测不支持自己在外面写的函数(showmebug平台),我一看时间,就剩5分钟了,直接将代码全部注释掉,换成return 100,结果提示我pass了..........,噗,我就直接交题了,ahhhhh
最后,请各位大佬们去个人主页帮忙投下票。
#笔试##AMD##超威半导体AMD#