洛阳达内教育

试听课 + 活动课
填写信息优先获取试听课

位置:学校首页 > 学校动态>洛阳西工区c++课程培训班怎么样

洛阳西工区c++课程培训班怎么样

  2019年C++开发工程师面试题集锦

  1、一个C++源文件从文本到可执行文件经历的过程

  对于C/C++编写的程序,从源代码到可执行文件,一般经过下面四个步骤:

  1).预处理,产生.ii文件

  2).编译,产生汇编文件(.s文件)

  3).汇编,产生目标文件(.o或.obj文件)

  4).链接,产生可执行文件(.out或.exe文件)

  2、C++11有哪些新特性

  1)关键字及新语法:auto、nullptr、for

  2)STL容器:std::array、std::forward_list、std::unordered_map、std::unordered_set

  3)多线程:std::thread、std::atomic、std::condition_variable

  4)智能指针内存管理:std::shared_ptr、std::weak_ptr

  5)其他:std::function、std::bind和lamda表达式

  3、C++的内存管理方式,STL的allocator,较新版本默认使用的分配器

  C++的内存管理方式:

  在c++中内存主要分为5个存储区:

  栈(Stack):局部变量,函数参数等存储在该区,由编译器自动分配和释放.栈属于计算机系统的数据结构,进栈出栈有相应的计算机指令支持,而且分配专门的寄存器存储栈的地址,效率分高,内存空间是连续的,但栈的内存空间有限。

  堆(Heap):需要程序员手动分配和释放(new,delete),属于动态分配方式。内存空间几乎没有限制,内存空间不连续,因此会产生内存碎片。操作系统有一个记录空间内存的链表,当收到内存申请时遍历链表,找到个空间大于申请空间的堆节点,将该节点分配给程序,并将该节点从链表中删除。一般,系统会在该内存空间的首地址处记录本次分配的内存大小,用于delete释放该内存空间。

  全局/静态存储区:全局变量,静态变量分配到该区,到程序结束时自动释放,包括DATA段(全局初始化区)与BSS段(全局未初始化段)。其中,初始化的全局变量和静态变量存放在DATA段,未初始化的全局变量和静态变量存放在BSS段。BSS段特点:在程序执行前BSS段自动清零,所以未初始化的全局变量和静态变量在程序执行前已经成为0.

  文字常量区:存放常量,而且不允许修改。程序结束后由系统释放。

  程序代码区:存放程序的二进制代码

  如何把一个文件下发到100w个服务器

  gossip算法?Gossip有众多的别名“闲话算法”、“疫情传播算法”、“病毒感染算法”、“谣言传播算法”。

  4、如何判断一个图是否连同?

  DFS、BFS、并查集

  5、ubuntu开机的时候系统做了什么

  1)加载BIOS

  BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做”硬件自检”。硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。

  2)读取MBR

  计算机读取该设备的个扇区,也就是读取较前面的512个字节。如果这512个字节的较后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给”启动顺序”中的下一个设备。

  3)Bootloader

  在这种情况下,计算机读取”主引导记录”前面446字节的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的”启动管理器”(boot loader),由用户选择启动哪一个操作系统。

  Boot Loader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为较终调用操作系统内核做好一切准备。

  Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。Linux环境中,目前较流行的启动管理器是Grub。

  4)加载内核

  内核的加载,内核加载后,接开始操作系统初始化,根据进程的级启动进程。

领取试听课
温馨提示:为不影响您的学业,来校区前请先电话或QQ咨询,方便我校安排相关的专业老师为您解答
版权所有:搜学搜课(www.soxsok.com) 技术支持:搜学搜课网