嵌入式面试题

一,io进程

1. 文件IO与标准IO的区别

    标准IO    文件IO
定义    在C库中定义的一组输入输出的函数    在posix中定义的一组输入输出的函数
特点    有缓冲机制
围绕流操作,FILE*
默认打开三个流:stdin\stdout\stderr
只能操作普通文件    没有缓冲机制
围绕文件描述符操作,int
默认打开三个文件描述符:0/1/2
操作除d外任意类型的文件
函数    打开文件:fopen/freopen
关闭文件:fclose
读写文件: fgetc/fputc/fgets/fputs/fread/fwrite
文件定位: fseek/rewind/ftell    打开文件:open
关闭文件:close
读写文件: read/write
文件定位: lseek

2. 进程与线程的区别

共性:都为操作系统提供了并发执行能力
不同点:
调度和资源:线程是系统调度的最小单位,进程是资源分配的最小单位
地址空间方面:同一个进程创建的多个线程共享进程的资源;进程的地址空间相互独立
通信方面:线程通信相对简单,只需要通过全局变量可以实现,但是需要考虑临界资源访问的问题;进程通信比较复杂,需要借助进程间的通信机制(借助3g-4g内核空间)
安全性方面:线程安全性差一些,当进程结束时会导致所有线程退出;进程相对安全

3. 进程间通信方式

传统进程间通信:
    无名管道、有名管道、信号
system v IPC对象:
    共享内存、信号灯集、消息队列
BSD:
    套接字

4. 静态库与动态库的区别

1) 静态库在程序编译时会被连接到目标代码中。
优点:程序运行时将不再需要该静态库;运行时无需加载库,运行速度更快
缺点:静态库中的代码复制到了程序中,因此体积较大;
   静态库升级后,程序需要重新编译链接
2) 动态库是在程序运行时才被载入代码中。
            优点:程序在执行时加载动态库,代码体积小;
 程序升级更简单;
不同应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例。
缺点:运行时还需要动态库的存在,移植性较差

5. 什么时孤儿进程?什么是僵尸进程?

若父进程先结束,子进程成为孤儿进程,被init进程收养,子进程变成后台进程。

若子进程先结束,父进程如果没有及时回收,子进程变成僵尸进程(要避免僵尸进程产生)

6. 什么是守护进程?守护进程的步骤?

1. 特点:守护进程是后台进程;生命周期比较长,从系统启动时开启,系统关闭时结束;它是脱离控制终端且周期执行的进程。

2. 步骤:

1) 创建子进程,父进程退出

让子进程变成孤儿进程,成为后台进程;fork()

2) 在子进程中创建新会话

让子进程成为会话组组长,为了让子进程完全脱离终端;setsid()

3) 改变进程运行路径为根目录

原因进程运行的路径不能被删除或卸载;chdir("/")

4) 重设文件权限掩码

目的:增大进程创建文件时权限,提高灵活性;umask(0)

5) 关闭文件描述符

将不需要的文件关闭;close()

二,inet网络编程

1,测试大端,小段

#include <stdio.h>
union un {
    int a;
    short b;
    char c;

};
int main(int argc, char const *argv[])
{
    int a = 0x12345678;
    char *p = (char *)&a;
    printf("%#x %#x\n", *p, *(p + 1));      //指针强转
    printf("%#x %#x\n", (char)a, (short)a); //类型强转

    union un st;
    st.a = 0x1234567;
    printf("%#x %#x\n", st.b, st.c); //结构体

    return 0;
}

2,Dos(拒绝式服务)攻击

DOS:即Denial Of Service,拒绝服务的缩写,拒绝服务,DOS攻击即攻击者想办法让目标机器停止提供服务或资源访问,这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。
 要对服务器实施拒绝服务攻击,主要有以下两种方法: 
①迫使服务器的缓冲区满,不接收新的请求;
②使用IP 欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接,这也是DoS攻击实施的基本思想。为便于理解,以下介绍一个简单的DoS 攻击基本过程:攻击者先向受害者发送大量带有虚假地址的请求,受害者发送回复信息后等待回传信息。由于是伪造地址,所以受害者一直等不到回传信息,分配给这次请求的资源就始终不被释放。当受害者等待一定时间后,连接会因超时被切 断,此时攻击者会再度传送一批伪地址的新请求,这样反复进行直至受害者资源被耗尽,最终导致受害者系统瘫痪。

3,子网掩码

子网掩码
●子网掩码:是一个32位的整数,作用是将某一个IP划分成网络地址和主机地址;
●子网掩码长度是和IP地址长度完全一样;
●网络号全为1,主机号全为0;
255.0.0.0   - A
255.255.0.0 - B
255.255.255.0 - C     

192.168.3.27 -》255.255.255.0 
192.168.3.27&255.255.255.0  ==》192.168.3.0 网段
192.168.3.27&(~255.255.255.0)==>0.0.0.27

子网掩码 & ip地址 = 网络地址 (网段)
~子网掩码 & ip地址 = 主机地址

子网号概念  
  举例:800个人    c类不够 b类太多    重新划分网段
三级地址  ip=网络号+子网号+主机号  
  网络号+子网号  -  网段(网络地址)
 练习1:某公司有四个部门:行政、研发1、研发2、营销,每个部门各30台计算机接入公司局域网交换机,如果要在192.168.1.0网段为每个部门划分子网,子网掩码应该怎么设置,每个子网的地址范围分别是什么?(4个部门之间不能通信)
192.168.1.   00    00 0000  - 11 1111      192.168.1.1 - 192.168.1.62  
192.168.1.   01   00 0000 - 11 1111      192.168.1.65 - 192.168.1.126
192.168.1.   10   00 0000 - 11 1111      192.168.1.129 - 192.168.1.190
192.168.1.   11  00 0000 - 11 1111     192.168.1.193 - 192.168.1.254
26个1   6个0 ==》子网掩码:255.255.255.192
192.168.1.172 & 255.255.255.192 =192.168.1.10 00000
192.168.1.172 &(~ 255.255.255.192)=0.0.0. 44
练习2:已知一个子网掩码号为255.255.255.192,问,最多可以连接多少台主机?62
练习3:有两台电脑主机,在最少浪费IP地址的情况下。将172.16.14.4与172.16.13.2划归为同一网段,则子网掩码应该设置为?

172.16.14.4 - 172.16.0000 11 10.0000 0100
172.16.13.2 - 172.16.0000 11 01.0000 0010
                       255.255.1111 11 00  0000 0000  = 255.255.252.0

4,OSI模型,TCP/IP模型

OSI模型
●OSI模型是一个理想化的模型,尚未有完整的实现
●OSI模型共有七层
●OSI现阶段只用作教学和理论研究 

OSI模型
OSI模型是最理想的模型
物理层:传输的是bit流(0与1一样的数据),物理信号,没有格式
链路层:格式变为帧(把数据分成包,一帧一帧的数据进行发送)
网络层:路由器中是有算法的,ip,(主机到主机)(路由的转发)
传输层:端口号,数据传输到具体那个进程程序(端到端)
会话层:通信管理,负责建立或者断开通信连接
表示层:确保一个系统应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据加密,解密;
应用层:指定特定应用的协议,文件传输,文件管理,电子邮件等。

TCP/IP模型

网络接口和物理层:屏蔽硬件差异(驱动),向上层提供统一的操作接口。
网络层:提供端对端的传输,可以理解为通过IP寻址机器。
传输层:决定数据交给机器的哪个任务(进程)去处理,通过端口寻址
应用层:应用协议和应用程序的集合

OSI和TCP/IP模型对应关系图

常见网络协议
网络接口和物理层:
    ppp:拨号协议(老式电话线上网方式)
    ARP:地址解析协议  IP-->MAC
    RARP:反向地址转换协议 MAC-->IP
网络层:    
    IP(IPV4/IPV6):网间互连的协议
    ICMP:网络控制管理协议,ping命令使用
    IGMP:网络分组管理协议,广播和组播使用
传输层:
    TCP:传输控制协议
    UDP:用户数据报协议
应用层:
    SSH:加密协议
    telnet:远程登录协议
    FTP:文件传输协议
    HTTP:超文本传输协议
    DNS:地址解析协议
    SMTP/POP3:邮件传输协议

注意:TCP和IP是属于不同协议栈层的,只是这两个协议属于协议族里最重要的协议,所以协议栈或者模型以之命名了。
 

5,搭建服务器类型

UDP和TCP
UDP TCP 协议相同点:都存在于传输层
TCP(即传输控制协议):
是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、
数据无失序、数据无重复到达的通信)

适用情况:
 1、适合于对传输质量要求较高,以及传输大量数据的通信。
 2、在需要可靠数据传输的场合,通常使用TCP协议
 3、MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

UDP :用户数据报协议

UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。

适用情况:
1、发送小尺寸数据(如对DNS服务器进行IP地址查询时)
2、在接收到数据,给出应答较困难的网络中使用UDP。
3、适合于广播/组播式通信中。
4、MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议
5、流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
DJI嵌入式面试题是一个考察面试者在嵌入式系统设计和开发方面的能力和经验的问题。以下是对此题目的一个可能回答: 在DJI嵌入式面试题中,我们需要展示自己在嵌入式系统设计和开发方面的能力和经验。首先,嵌入式系统是一种集成度很高的计算机系统,通常嵌入在特定的设备中,具有实时性和稳定性的要求。因此,对于DJI这样的无人机制造商而言,嵌入式系统的设计非常重要。 在面试过程中,我们可能会被问到关于嵌入式系统设计和开发的问题。例如,如何设计一个满足实时性和稳定性要求的飞行控制系统?我们可以回答说,首先需要对传感器数据进行采集和处理,确保数据的准确性和实时性。然后,需要设计一个高效的控制算法,以响应不同的飞行指令,并保持飞行安全和稳定。此外,还需要考虑系统的可靠性和故障管理,以应对各种异常情况。 另一个可能的问题是关于嵌入式系统的软件开发。我们可以回答说,开发一个嵌入式系统的软件需要熟悉不同的编程语言,例如C或C ++。同时,我们需要了解嵌入式系统的硬件架构和接口,以便编写有效的驱动程序和应用程序。另外,了解嵌入式操作系统(例如,FreeRTOS)和实时调度器的原理也是非常重要的。 总之,在DJI嵌入式面试中,我们需要展示对嵌入式系统设计和开发的理解和经验。不仅要熟悉硬件和软件的开发,还要考虑系统的实时性、稳定性和可靠性。这样才能胜任嵌入式系统设计和开发的工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值