360嵌入式 4.8面经 仅供参考
虽然刚面完,但是问题就记不全了,脑子啊.....
1.自我介绍
2.Linux 常用的命令
3.makefile 会写吗?
4.Socket建立连接的过程,,回答TCP三次握手就好
答:
第一次握手:
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里
第二次握手:
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1
第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1
5.进程间通信方式
(1). 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
(2). 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
(3)消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
(4)共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
(5)信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
(6) 套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
(7)信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
(2). 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
(3)消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
(4)共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
(5)信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
(6) 套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
(7)信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
6.线程间通信方式
(1)互斥锁(2)信号(3)信号量
7.#include<> include" "区别
(1)引用的头文件不同
#include< >引用的是编译器的类库路径里面的头文件。
#include“ ”引用的是你程序目录的相对路径中的头文件。
(2)用法不同
#include< >用来包含标准头文件(例如stdio.h或stdlib.h).
#include“ ”用来包含非标准头文件。
(3)调用文件的顺序不同
#include< >编译程序会先到标准函数库中调用文件。
#include“ ”编译程序会先从当前目录中调用文件。
(4)预处理程序的指示不同
#include< >指示预处理程序到预定义的缺省路径下寻找文件。
#include“ ”指示预处理程序先到当前目录下寻找文件,再到预定义的缺省路径下寻找文件。
8.static的作用
-
限制符号的作用域只在本程序文件
-
指定变量的存储位置 全局区全局静态变量:局部静态变量:静态函数
-
修饰C++类的成员,使之成为类的静态成员变量或类的静态成员函数,这样就可以直接同个类名加范围解析运算符直接对静态成员进行访问,而不用某个具体的对象名,因为静态成员属于类,而不属于某个具体的对象。
9.C/C++内存分区
- 1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等
- 其操作方式类似于数据结构中的栈。
- 2、堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由
- OS(操作系统)回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
- 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化
- 的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻
- 的另一块区域。程序结束后由系统释放。
- 4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放。
- 5、程序代码区—存放函数体的二进制代码。
10. malloc new的区别
11 队列 栈的区别(先进先出、先进后出)
12.项目种遇到什么问题,是怎么解决的
13.你的发展方向,嵌入式? 后端? 客户端?(投的嵌入式,当然说嵌入式了额)
14你有什么问题想问我的吗?
#360##360公司##嵌入式工程师##校招##面经#