海康威视软件开发工程师-BSP笔试 10-10

《嵌入式软件开发笔试与面试手册》https://blog.nowcoder.net/zhuanlan/jvN8gj

《软件开发笔试汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

单选题

关于程序的运行效率,下列说法错误的是?

对二维数组a[M][N]进行遍历时,应该外层循环遍历M,内层循环遍历N,这样执行效率最高

if else的分支语句编写,把最可能发生的条件写在最前面

发生Cache miss,CPU要到内存中存取数据,这个过程比较慢,所以操作系统一般会调度到其它线程去执行以提升CPU利用率

使用volatile关键字会影响编译的优化,所以只应在必要的情况下使用

解释:

虽然在Cache miss时,CPU确实需要花费更多时间从内存中加载数据,但操作系统的线程调度决策并不基于单个Cache miss事件。操作系统通常在多个任务或线程之间进行调度,以优化整体的CPU利用率,但这是基于时间片或硬件中断,而不是单独的Cache miss事件。Cache miss可以导致延迟,但不直接导致操作系统调度其他线程。

 

关于静态库和动态库的描述,错误的是()

静态链接库是在编译时编译到源码中的,在运行时刻和静态库就没有任何关系,

不同应用程序如果调用相同的动态库,那么内存里只有一份该动态库的实例。相比静态库,使用动态库更能节省空间和资源。

静态库对函数库的链接是在编译时完成的,而动态库是在程序运行期间进行的链接

多个进程加载使用同一个动态链接库时,该动态链接库的堆栈空间是被多个进程共享的。

解释:

虽然动态链接库的代码段在内存中是共享的,但每个进程都有自己的堆栈空间。堆栈空间包含了函数调用的局部变量、返回地址等,这些信息是独立于每个进程的,不可能在进程间共享。

32位系统中C程序有符号短整型变量的最大值为()

32767

32768

65536

65535

 

下面程序的运行结果是():

int main(){
	const int i=5;
	const int *ptr;
	ptr=&i;
	*ptr=1024;
	printf("%d\n",i++);
	return 0;
}

5

1024

6

编译出错,无法运行

解释:尝试通过 const int *ptr; 和 ptr=&i; 来修改 i 的值 *ptr=1024; 是不允许的。因为 ptr 是一个指向 const int 的指针,这表示通过 ptr 指针不可以修改它所指向的值。在非 const 环境下修改 const 变量是未定义行为,并且编译器通常会阻止这种操作。

下列关于TCP工作原理,错误的是()

TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序,这种情况下应用层收到的数据也是失序

TCP将保持它首部和数据的检验和,这是一个端到端的检验

应用数据被分割成TCP认为最适合发送的数据块。

TCP能提供流量控制

解释:TCP确实在IP数据报上封装其报文段,而IP数据报到达可能会失序。但是,TCP有序列号机制来确保数据可以重新排序,因此即使TCP报文段到达失序,TCP也会在传递数据给应用层之前重新排序。因此,应用层接收到的数据是有序的。

Linux用户空间直接访问的内存地址属于()

虚地址和实地址都有

实地址

虚地址

物理地址

解释:在Linux操作系统中,用户空间程序访问的内存地址通常是虚拟地址(Virtual Address)。这是因为现代操作系统,包括Linux,使用虚拟内存系统来管理程序的内存访问。虚拟内存为每个进程提供了一个独立的地址空间,这个地址空间由操作系统通过内存管理单元(MMU)映射到物理内存上。

不是用户空间与内核通信方式的是()

内存映射

系统调用

驱动程序

信号量

解释:虽然驱动程序是内核的一部分,主要用于操作硬件设备,但它本身并不是一种用户空间与内核通信的方式。用户空间程序通常通过系统调用来与驱动程序交互,而不是直接与驱动程序通信。

存储一个32位数0x13892878004H~8007H四个字节单元中,若以大端模式存储,则8004H单元存储的内容为:()

0x87

0x13

0x92

0x01

解释:在大端模式中,最高有效字节(MSB)存储在最低的内存地址,其余字节按照顺序存储在更高的内存地址中。

  • 地址 8004H 将存储最高有效字节(MSB):0x01
  • 地址 8005H 将存储下一个高位字节:0x38
  • 地址 8006H 将存储下一个字节:0x92
  • 地址 8007H 将存储最低有效字节(LSB):0x87

 

有如下代码:

int a =4;

int b = 9;

那么表达式a>=(b>8?:sizeof(a=b+1),a)的返回类型、返回值、以及a的值各自是多少?

整型;1;a=4

布尔;1;a=5

整型;0;a=10

布尔;0;a=10

#include <stdio.h>

int main() {
    int a = 4;
    int b = 9;

 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

1.&nbsp;自我介绍2.&nbsp;项目都是自己写的吗?3.&nbsp;我看你用&nbsp;koa2&nbsp;写后端,为什么选择它,能讲讲吗?4.&nbsp;那你提到&nbsp;koa2&nbsp;它是不提供中间件的,你是怎么解决的?5.&nbsp;中间件的原理是什么?(洋葱模型)6.&nbsp;你刚刚说碰到&nbsp;next()&nbsp;就进入下一个中间件,那&nbsp;next&nbsp;只能执行同步,如果是异步的话,你是怎么处理的?(async/await,但是我发现,有的中间件需要在异步中间件之前执行,所以我用&nbsp;try/catch&nbsp;来处理异步中间件的异常)7.&nbsp;JS&nbsp;异步发展史,以及它们的优缺点说一下&nbsp;(回调函数--Promise--Generator--async/await)8.&nbsp;你刚刚说&nbsp;Promise&nbsp;状态不能更改,那如果我要设计一个能修改&nbsp;Promise&nbsp;状态的函数,你会怎么设计?9.&nbsp;CSS&nbsp;水平垂直居中的方法(flex、grid、绝对定位&nbsp;+&nbsp;margin:auto、绝对定位&nbsp;+&nbsp;负&nbsp;margin、绝对定位&nbsp;+&nbsp;transform、table-cell)10.&nbsp;你刚刚说到&nbsp;flex&nbsp;布局,那&nbsp;flex:1&nbsp;是什么意思?(flex:&nbsp;flex-grow&nbsp;&nbsp;flex-shrink&nbsp;&nbsp;flex-basis;等价&nbsp;flex:1&nbsp;1&nbsp;0%表示元素可以均分剩余空间,可拉伸、可压缩,不依赖内容宽度,自动自适应填充布局。)11.&nbsp;父容器宽是&nbsp;500px,然后它左右各有两个子容器是&nbsp;100px,如果设置&nbsp;flex:&nbsp;1,那它的宽度是多少?(500-100-100=300px)12.&nbsp;说说你对浏览器缓存的理解(强缓存、协商缓存)13.&nbsp;如果一个用户,他怎么去刷新都无法刷到最新版的代码,你能说下可能的原因吗?(版本号、hash等)还有吗?(我说我不知道了,面试官说还有&nbsp;CDN&nbsp;没有同步,我说企业才会这么干,自己写项目一般不会,我知道&nbsp;cdn&nbsp;是用来解决高并发的手段)14.&nbsp;React你熟吗?说下&nbsp;React&nbsp;函数组件和类组件的区别15.&nbsp;怎么避免&nbsp;Hooks&nbsp;导致组件重新渲染?(使用&nbsp;useCallback、useMemo、React.memo、useRef等等)16.&nbsp;谈一下我对&nbsp;React&nbsp;的状态管理的理解(Redux、Mobx、Zustand,我说&nbsp;Zustand&nbsp;用的最多)17.&nbsp;React&nbsp;常见的&nbsp;hooks&nbsp;有哪些?(useState、useEffect、useRef、useCallback、useMemo、useReducer、useContext、useImperativeHandle、useLayoutEffect、useDebugValue)18.&nbsp;TS&nbsp;你熟吗?我们引进&nbsp;TS&nbsp;的目的是为什么?19.&nbsp;interface&nbsp;和&nbsp;type&nbsp;的区别20.&nbsp;说下&nbsp;TS&nbsp;里的泛型21.&nbsp;我现在有十个字段,比如十个字段就要&nbsp;A&nbsp;B&nbsp;C&nbsp;D&nbsp;E&nbsp;F&nbsp;G&nbsp;这种。那我现在另有另外一个方法,这个方法接受的参数呢,必须是这个&nbsp;interface&nbsp;A&nbsp;里面的这个&nbsp;K。就比如说你可以是&nbsp;A&nbsp;B&nbsp;C&nbsp;可以&nbsp;A&nbsp;B&nbsp;C&nbsp;D&nbsp;任何组合都可以,但是必须是这个&nbsp;interface&nbsp;里面的&nbsp;A&nbsp;里面的定义的。这个&nbsp;K&nbsp;这种类型的话是怎么去定义呢?(说实话我有点不太理解啥意思,反正我说了&nbsp;keyof)```&nbsp;TypeScriptinterface&nbsp;Obj&nbsp;{A:&nbsp;stringB:&nbsp;stringC:&nbsp;stringD:&nbsp;stringE:&nbsp;string//&nbsp;其他字段...}```22.&nbsp;vite&nbsp;用过吗?说说和&nbsp;webpack&nbsp;的区别。vite&nbsp;的优缺点是什么23.&nbsp;说说&nbsp;Tree&nbsp;shaking(树摇)&nbsp;和&nbsp;Code&nbsp;Splitting&nbsp;(代码分割)的区别24.&nbsp;Git&nbsp;你熟吗?说说&nbsp;git&nbsp;merge&nbsp;和&nbsp;git&nbsp;rebase&nbsp;的区别,什么时候用&nbsp;git&nbsp;merge,什么时候用&nbsp;git&nbsp;rebase?25.&nbsp;web3&nbsp;你熟吗?(不太熟,听说过而已)26.&nbsp;我看你自我介绍说了&nbsp;AI,你是怎么用的?27.&nbsp;除了提示词,还有什么能让&nbsp;AI&nbsp;更聪明?28.&nbsp;AI&nbsp;的优缺点你说一下29.&nbsp;AI&nbsp;发展这么快,你觉得我们以后会扮演什么角色?30.&nbsp;反问基本都答上来了。面了我80分钟,我还以为稳过的
查看29道真题和解析
点赞 评论 收藏
分享
评论
4
27
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务