笔试的一些题目及解答

1、请选择正确的描述。(   )

A.  静态变量和全局变量是在程序一开始时分配内存的,这部分内存无法回收,直至程序结束

B.  通常常来说,在堆上分配内存比在栈上分配内存效率更高

C.  当我预先知道待分配内存大小时,我就可以直接在栈上分配内存,只要不超过当前操作系统的可用内存大小,就永远会成功

D.  内存泄漏就是指当A程序申请一块内存时,有可能操作系统把B程序的一块内存先交给A程序使用,等A程序结束后再返回给B程序,在内存借用的这段时间内,B程序就产生了内存泄漏

参考答案:A

解析:

栈上分配内存效率更高;栈上申请内存并不总是成功;内存泄漏是使用完成之后未回收又无法使用的区域。

2、关于浮点数,下面的描述不正确的是(   )。

A.  总能找到一个32bit整数(32 bit int),来描述一个IEEE754 32bit浮点数的整数部分

B.  总能找到一个IEEE754 64bit浮点数,来描述一个32bit整数(32 bit int)

C.  表达式(0.666f - 0.665f == 0.001f),无论在任何平台,一定返回True

D.  当两个不同的平台都使用IEEE754作为浮点数标准时,他们的浮点运算结果就会严格一致

参考答案:C

解析:

 相同位时,浮点数的表示范围大于整数,但是由于精度相对于整数较低,依浮点数的尾数位数而定。

在不同平台浮点数标准不同,自然可能存在精度的不同,如果精度过低,可能不同

3、有如下一个类似跳表的额数据结构:

每层都是已经排好序的链表,

level  1层的链表有所有元素,

level  N层的链表只有levelN-1的1半的元素,

level  N层的结点指向levelN-1层中相同的结点。

请问查找一个元素的时间复杂度是(  )。

A.  O(nlog2n)

B.  O(n)

C.  O(log2n)

D.  O(n2)

参考答案:C

解析:

二分查找时间复杂度计算:

总共有n个元素,

渐渐跟下去就是n,n/2,n/4,....n/2^k,其中k就是循环的次数

由于你n/2^k取整后>=1

即令n/2^k=1

可得k=log2n,(是以2为底,n的对数)

所以时间复杂度可以表示O()=O(logn)

4、假设QQ用户包含8种状态,QQ号码为42亿,最少用多少内存标识所有用户状态?(   )

A.  约500M

B.  约1G

C.  约1.5G

D.  约2G

参考答案:C

一个内存0/1能表示两种状态

42*10^8*4=168*10^8=16.8*10^9=

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式C语言笔试题目及答案常见于嵌入式系统软件工程师的招聘过程中,主要考察应聘者对C语言和嵌入式系统的基本理解和掌握程度。以下是一道常见的嵌入式C语言笔试题及答案: 题目:请写一个函数,实现对一个16位无符号整数的高8位和低8位进行互换的功能。 解答: ```c #include <stdio.h> #include <stdint.h> uint16_t swapBytes(uint16_t num) { uint8_t lowByte = (uint8_t)num; uint8_t highByte = (uint8_t)(num >> 8); return (lowByte << 8) | highByte; } int main() { uint16_t num = 0xABCD; printf("原始数据:0x%X\n", num); uint16_t swappedNum = swapBytes(num); printf("互换后的数据:0x%X\n", swappedNum); return 0; } ``` 解答思路:该题目要求实现一个函数`swapBytes`,函数的输入参数为一个16位无符号整数`num`,函数的返回值为将`num`的高8位和低8位互换后的值。我们可以通过位运算符和类型转换来实现这个逻辑。首先,我们将`num`强制类型转换为一个8位无符号整数(低8位),再通过位运算符将`num`右移8位得到的剩余8位无符号整数(高8位)。然后,将这两个8位无符号整数重新组合成一个16位无符号整数返回。 通过上述的C语言代码,我们可以得到一个示例输出: ``` 原始数据:0xABCD 互换后的数据:0xCDAB ``` 以上是一道常见的嵌入式C语言笔试题目及答案,希望对您有所帮助。请注意,笔试题目和答案可能因面试环境和公司要求而略有不同,以上解答仅供参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值