面试总结:
嵌入式开发:负责开发和维护集成在硬件设备中的嵌入式系统,涉及到内核态,选择合适的硬件平台和软件框架,进行硬件开发和调试,编写底层驱动程序或中间件,确保嵌入式系统可以有效控制硬件,使用C++或汇编语言开发嵌入式固定件,处理实时操作系统RTOS或裸机系统。
define和inline区别:define是预处理指令,预编译的宏定义,宏可以是常量、函数或代码段,不进行类型检查,预处理器替换为定义内容,整个文件全局可见;inline将函数调用替换为函数体,减少开销,在编译阶段进行处理,进行类型检查和作用域控制,以及各自优缺点。
内存泄漏如何检查和解决:手动代码检查、调试工具(gdb)跟踪内存分配和释放、静态分析工具(Cppcheck)、内存泄漏检测工具(Valgrind、AddressSanitizer、Dr. Memory)、集成开发环境IDE工具
正确释放内存、使用智能指针、避免重复分配、定期测试和检查、重构代码代码优化
NAT:网络地址转换,一种网络通信技术,主要用于将私有网络地址转换为公有网络地址,从而实现多个设备共享一个公有ip进行互联网访问,私有IP(局域网LAN内的IP,不可直接在互联网使用)、公有IP(互联网使用的IP,可以全球范围内唯一标识一台机器)、NAT网关(转换设备,通常是路由器),通过修改IP数据包的源IP和目的IP实现通信,可以节省IP地址、提高安全性、灵活和便利,但是延迟和性能开销增加、存在端到端通信问题、比较复杂,分为静态NAT(固定公有IP)和动态NAT(动态映射公有IP池中可用IP)和PAT(多个私有IP共享一个公有IP)
linux内部架构:复杂且高度模块化的系统,内核层(管理系统资源并提供底层服务,进程管理、内存管理、文件系统、设备驱动、网络堆栈等)、用户空间(运行用户应用程序,标准库、用户应用程序、用户空间服务)、系统启动过程、内核模块(动态加载)、虚拟文件系统VFS(统一不同文件系统的操作接口)、网络子系统(网络协议栈)、安全机制(权限管理、命名空间、控制组等)