诺瓦星云面试汇总

2023-10-09 00:59
文章标签 面试 汇总 诺瓦 星云

本文主要是介绍诺瓦星云面试汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、C语言向一个内存地址写值,

2、申请释放内存

3、makefile

4、socket   I/O复用

5、strcpy与strcat

6、内存的分配

7、new 和  malloc

8、Tcp和udp的区别

9、嵌入式linux的调试方式

10、iic  上拉电阻的作用

11、指针常量与常量指针

12、内存泄漏

13、野指针

14、链表和数组的区别

15、反转链表

16、Linux gcc编译命令

17、spi(多少根线,时序等) iic(多少根线,时序等)

18、有没有用过示波器,逻辑分析仪

19、说一下server端网络编程的步骤

20、static,const,volatile关键字

21、static关键字在c语言中和c++中有何不同

25、如果大量频繁的申请堆空间会发生什么?

29、linux内核,TCP/IP中源socket怎么回事,三种socket报文模式

31、内存拷贝函数与字符串拷贝函数

32、查找文件的命令

33、管道

34、内核与用户的转换

35、互斥量与信号量的底层

36、OSL七层模型、五层模型

37、冒泡排序

38、查看tty设备方法

39、数组与指针的区别


1、C语言向一个内存地址写值,

int main() {int value = 42;int *ptr = (int *)0x12345678;  // Replace with the desired memory address*ptr = value

2、申请释放内存

申请内存int *dynamicArray  = (int*)malloc(size *sizeof(int));释放内存  free(dynamicArray)

3、makefile

makefile 我只会模仿改写makefile的基本思路 是查第一行目标文件有没有的依赖文件,如果没有,就在下面的代码的目标文件中查找,有就执行相应的代码

clean:
       rm -f myprogram
 行 make clean 就会执行 clean 目标,删除名为 myprogram 的文件

all: main.c utils.c   (all 默认)
     gcc -o myprogram main.c utils.c
 test: myprogram(test  目标名字   myprogram  依赖名字)
            ./myprogram test_input.txt
执行make   执行all下命令
执行 make test  执行test下命令

引入库
  

1、写好路径

2、库和路径添加到链接命令中

导入模板
 
include common.mk  ,这样makefile就导入模板了

4、socket   I/O复用

select函数,可以监听的数目有限制,并且每次都调用select函数的时候都需要将fd集合从用户态拷贝到内核态 ,同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大

 

2、po'll 开销也比较大,但是因为fd使用链表这样的话,数目限制就不存在了

 

3、epoll将主动轮询变成被动通知,当有事情发生时,接收到通知后再去处理,也就是epoll会把哪个流发生哪种i/o事件通知我们,epoll是事件驱动(每个事件关联到fd),epoll底层是红黑树,epoll内部使用事件驱动的机制,内核中维护了一个链表来记录就绪事件,当某个socket有事件发生时,通过回调函数内核将其加入到就绪事件链表中,

当用户调用epoll_wait()函数时,只会返回有事件发生的文件描述符的个数,不需要像select和poll那样进行轮询,大大提高了检测的效率

5、strcpy与strcat

strcpy  地址拷贝

strcat   值拷贝

6、内存的分配

1、堆(地址从上到下递减)

2、栈(地址从上到下递增)

3、全局变量区\静态变量区(未初始化bss  初始化data)

4、文本区(代码本文 + 常量)

7、new 和  malloc

两个分配的都是在堆空间,new 不需要指定空间大小,new 分配完还会调用构造函数初始化

8、Tcp和udp的区别

TCP不能直接传输,需要连接具有可靠性,适合高质量传输,但是速度慢
UDP可以直接传输,但是不安全,速度也快

9、嵌入式linux的调试方式

应用中 printf  
驱动内核中  printk

gdb调试运行

10、iic  上拉电阻的作用

1、高电平

 2、开漏输出

11、指针常量与常量指针

指针常量 :指针是一个常量,指针指向不能变

常量指针:指针指向的是一个常量

12、内存泄漏

是指程序在申请内存后无法释放已申请的内存空间,导致系统无法及时收回内存并且分配给其他进程使用

1、动态分配的内存没有被释放:当使用关键字 new 或 malloc 分配内存时,应该使用对应的 delete 或 free 函数来释放内存。如果没有正确释放,就会导致内存泄漏

2、丢失对分配内存的指针

3、c++中子类析构函数没有设置为虚函数

13、野指针

野指针不是NULL指针,是指向被释放的或者访问受限的内存的指针

1、指针变量没有被初始化,任何刚创建的指针不会自动成为NULL

2、指针被free或delete之后,没有置NULL

3、指针操作超越了变量的作用范围,比如要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放

14、链表和数组的区别

访问元素效率:

  • 数组:由于数组的元素在内存中是连续存储的,访问元素的效率非常高,只需要通过索引即可。

  • 链表:链表的元素分散在内存中不同位置,访问元素需要按照节点指针的顺序遍历,效率较低。

15、反转链表

需要三个指针,一个pre指针指向反转的前一个节点,cur指向要反转的节点,然后设置有一个temp指针指向需要反转的下一个节点,用来使得cur指针移动,因为我们反转之后,无法使用next指针访问到后一个节点

16、Linux gcc编译命令

1、预处理 gcc -E hello.c -o hello.i(头文件展开,进行源文件中的宏替换,注释过滤)

2、编译    gcc -S hello.i -o hello.s(将源文件编译成汇编文件)

3、汇编    gcc -c hello.s -o hello.o(将汇编文件转换成二进制文件)

4、链接   gcc hello.o -o hello(将二进制文件打包成可执行文件

17、spi(多少根线,时序等) iic(多少根线,时序等)

18、有没有用过示波器,逻辑分析仪

19、说一下server端网络编程的步骤

20、static,const,volatile关键字

21、static关键字在c语言中和c++中有何不同

  1. 类的静态成员变量和函数: 在 C++ 语言中,static 关键字被广泛用于类的静态成员变量和静态成员函数。静态成员变量是类的所有对象共享的变量,而静态成员函数不属于任何特定对象,可以直接通过类名调用。

  2. 函数内的静态变量: C++ 中的函数内的静态变量的作用与 C 语言类似,仍然将变量的作用域限制在函数内,并保持其值在函数调用之间不变。

  3. 命名空间中的静态变量: 在 C++ 中,static 关键字还可以用于命名空间内的静态变量,这将限制变量的作用域在命名空间内,并且在不同文件中可以共享

22、问了一个结构体问占用内存大小,如何改变内存大小(更改成员变量位置,或者取消结构体对齐)

23、栈和队列的区别

24、编译完的程序在内存中的分布

25、如果大量频繁的申请堆空间会发生什么?

内存泄漏

堆碎片化

性能下降

系统崩溃

29、linux内核,TCP/IP中源socket怎么回事,三种socket报文模式

源socket"通常指的是套接字(socket)的一个端点

三种报文形式
面向连接的套接字(SOCK_STREAM)

面向消息的套接字(SOCK_DGRAM)

原始套接字(Raw Socket

30、共享内存函数

31、内存拷贝函数与字符串拷贝函数

memcpy():用于从源内存地址复制一定数量的字节到目标内存地址。

字符串拷贝  strcpy

32、查找文件的命令

find /path/to/search -name "filename.ext"
 

33、管道

linux  命令中的管道

    了命令行中的管道(|)用于将一个命令的输出连接到另一个命令的输入外

  

34、内核与用户的转换

1、中断

2、异常

3、系统调用

35、互斥量与信号量的底层

通常涉及原子操作和线程阻塞。

36、OSL七层模型、五层模型

37、冒泡排序

38、查看tty设备方法

39、数组与指针的区别

  • 数组的大小固定,而指针可以动态指向不同的数据。

  • 内存布局:数组的元素在内存中是连续存储的,而指针可以指向任何内存位置。

  • 访问方式:数组通过下标直接访问元素,而指针需要通过解引用操作来访问所指向的数据。

  • 声明方式:数组声明时需要指定大小和数据类型,而指针声明只需要指定数据类型。

这篇关于诺瓦星云面试汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/169208

相关文章

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,