当前位置: 首页 > news >正文 做数据表格的网站苏州企业网站设计 news 2025/10/24 11:37:40 做数据表格的网站,苏州企业网站设计,wordpress 自动跳转,wordpress文档模板下载中望C面经#xff0c;全部内容#xff01; 公众号#xff1a;阿Q技术站 文章目录 中望C面经#xff0c;全部内容#xff01;一面 8.15 时长45min1、介绍项目相关2、gdb怎么调试的#xff1f;打断点用什么指令#xff1f;3、gcc的编译过程4、cmake添加头文件搜索路径用…中望C面经全部内容 公众号阿Q技术站 文章目录 中望C面经全部内容一面 8.15 时长45min1、介绍项目相关2、gdb怎么调试的打断点用什么指令3、gcc的编译过程4、cmake添加头文件搜索路径用什么指令添加动态链接库呢5、什么是内核态什么是用户态?6、C内存分区7、B-树、B树、B树的演进8、B树增删改查时间复杂度9、死锁的条件10、迭代器和指针有什么区别11、list和vector的迭代器有什么不一样的地方12、map的迭代器可以吗怎么实现的13、Deque怎么实现的14、STL的sort是怎么实现的15、Deque比Vector的优势在哪里除了双端开口16、C多态如何实现的虚函数表指针存在哪里哪个内存分区 二面 8.22 时长45min1、聊项目2、场景题一个图片对其进行缩放操作随着缩放次数的增加用户的体验会越来越卡顿你怎么优化3、最近在读哪些技术书籍对你有什么帮助吗4、平时有什么兴趣爱好5、反问环节。 来源https://www.nowcoder.com/discuss/550638389125541888 一面 8.15 时长45min 1、介绍项目相关 2、gdb怎么调试的打断点用什么指令 编译时添加调试信息在编译程序时需要使用-g选项以便将调试信息嵌入可执行文件中。例如 g -g -o my_program my_program.cpp启动 GDB在终端中执行以下命令 gdb ./my_program这将启动 GDB 并加载你的可执行文件。 设置断点设置断点以在程序执行到指定位置时暂停。可以使用break命令 break main这将在main函数的开头设置一个断点。你也可以使用文件名和行号设置断点。 运行程序在 GDB 中执行run命令启动程序 run当程序执行到断点时会暂停执行。 查看变量的值使用print或简写的p命令来查看变量的值 print variable_name单步执行使用step命令来单步执行程序进入函数内部 step下一步执行使用next命令来执行下一行代码不进入函数内部 next继续执行使用continue或简写的c命令来继续执行程序直到下一个断点 continue查看堆栈使用backtrace或简写的bt命令来查看函数调用堆栈 backtrace退出 GDB使用quit或简写的q命令退出 GDB quit3、gcc的编译过程 预处理Preprocessing 输入文件 源代码文件通常以 .c、.cpp、.c、.h 等为扩展名。处理工具 预处理器cpp。过程 预处理器会执行一系列的预处理操作包括宏替换、文件包含、条件编译等。产生一个新的临时文件通常以 .i 或 .ii 为扩展名。 gcc -E input.c -o output.i编译Compilation 输入文件 预处理生成的文件.i 或 .ii。 处理工具 编译器cc1。 过程 编译器将源代码翻译成汇编代码。产生一个汇编文件通常以 .s 为扩展名。 gcc -S output.i -o output.s汇编Assembly 输入文件 编译生成的汇编文件.s。 处理工具 汇编器as。 过程 汇编器将汇编代码翻译成目标文件机器码。产生一个目标文件通常以 .o 或 .obj 为扩展名。 gcc -c output.s -o output.o链接Linking 输入文件 目标文件、库文件等。 处理工具 链接器ld。 过程 链接器将目标文件、库文件等合并生成最终的可执行文件。链接的过程包括地址解析、符号解析、重定位等。 gcc output.o -o executable4、cmake添加头文件搜索路径用什么指令添加动态链接库呢 在 CMake 中可以使用 include_directories 指令添加头文件搜索路径使用 target_link_libraries 指令添加动态链接库。 添加头文件搜索路径 include_directories(path/to/include)这样就会将 path/to/include 目录添加到项目的头文件搜索路径中。 添加动态链接库 target_link_libraries(your_target_name library_name)这里 your_target_name 是你项目中的目标名称library_name 是要链接的动态库名称。你可以指定多个库它们之间用空格分隔。 如果库文件不在默认的系统库搜索路径中你可能还需要使用 link_directories 指令指定库文件的搜索路径 link_directories(path/to/library)注意尽量避免使用 link_directories而是将库文件路径传递给 target_link_libraries因为 link_directories 是全局的可能影响其他目标。而 target_link_libraries 可以更精确地指定目标所需的库。 给个示例 CMakeLists.txt 文件 # CMake 最低版本要求 cmake_minimum_required(VERSION 3.10)# 项目名称 project(MyProject)# 添加头文件搜索路径 include_directories(path/to/include)# 添加库文件搜索路径可选 # link_directories(path/to/library)# 添加可执行文件 add_executable(my_executable main.cpp)# 添加动态链接库 target_link_libraries(my_executable my_library)5、什么是内核态什么是用户态? 内核态Kernel Mode 在内核态执行时程序具有较高的特权级别可以执行任意指令包括对硬件的直接访问。内核态通常是操作系统的核心部分用于执行敏感的、特权的操作如管理硬件、执行系统调用等。在内核态执行时程序能够执行所有指令访问所有内存区域并能响应所有中断。 用户态User Mode 在用户态执行时程序的特权级别较低受到一定的限制不能执行某些特权指令也不能直接访问硬件资源。大多数应用程序在用户态下执行它们不能直接操作底层硬件而是通过系统调用请求内核态的服务。在用户态执行时程序不能随意访问所有内存区域也不能执行一些特权操作。 操作系统使用这两种特权级别的切换来保护系统的稳定性和安全性。当用户程序需要执行一些特权操作时例如请求文件读写、申请内存等它会通过系统调用陷入内核态由操作系统内核来执行相应的特权操作。执行完毕后再返回到用户态。 6、C内存分区 在C中内存分成5个区他们分别是栈、堆、自由存储区、全局/静态存储区和常量存储区。 栈在执行函数时函数内局部变量的存储单元都可以在栈上创建函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中效率很高但是分配的内存容量有限。堆就是那些由new分配的内存块他们的释放编译器不去管由我们的应用程序去控制一般一个new就要对应一个delete。如果程序员没有释放掉那么在程序结束后操作系统会自动回收。自由存储区就是那些由malloc等分配的内存块他和堆是十分相似的不过它是用free来结束自己的生命的。全局/静态存储区全局变量和静态变量被分配到同一块内存中在以前的C语言中全局变量又分为初始化的和未初始化的在C里面没有这个区分了他们共同占用同一块内存区。常量存储区这是一块比较特殊的存储区他们里面存放的是常量不允许修改。 7、B-树、B树、B树的演进 B-树Balance Tree B-树是一种平衡的多路搜索树每个节点包含多个子节点。B-树的特点是每个节点包含关键字和子节点的信息且所有叶子节点都在同一层次上使得查询时能够更快速地定位到目标数据。B-树常用于文件系统和数据库索引结构例如在数据库中作为索引的数据结构可以加速检索操作。 B树Binary Tree B树是B-树的一个特例其每个节点最多包含两个子节点。B树的演进可以看作是对B-树的简化特别适用于内存中的数据结构。B树的每个节点包含一个或多个关键字和对应的子树。B树在计算机科学中有广泛的应用尤其在数据库和文件系统中用于加速检索和存储操作。 B树 B树是在B树的基础上进行的改进。与B树不同B树的非叶子节点不存储数据只存储关键字和子节点的信息而数据都存储在叶子节点上。B树的叶子节点形成了一个有序链表可以方便地进行范围查询而且所有叶子节点都有一个指向下一个叶子节点的指针形成了更加紧凑的结构。B树在数据库索引中广泛应用它更适合范围查询和顺序遍历。 8、B树增删改查时间复杂度 插入Insert B树的插入操作一般是从根节点开始向下逐层查找要插入的位置然后插入到叶子节点上。如果插入导致节点的关键字个数超过限制可能需要进行节点的分裂操作但分裂操作的影响是局部的因此时间复杂度为 O(log n)其中 n 是B树的高度。 删除Delete B树的删除操作也是从根节点开始向下逐层查找要删除的关键字所在的位置然后删除。删除可能导致节点关键字的减少可能需要进行节点的合并或者借用邻近节点的关键字但合并和借用的操作也是局部的时间复杂度也为 O(log n)。 查找Search B树的查找操作从根节点开始根据关键字逐层向下查找最终定位到目标叶子节点。由于B树的叶子节点形成有序链表可以通过二分查找或顺序查找在叶子节点上找到目标关键字。整个查找过程的时间复杂度同样是 O(log n)。 更新Update B树的更新操作涉及到查找和修改因此时间复杂度也是 O(log n)。 需要注意的是虽然B树的各项操作的最坏时间复杂度都是 O(log n)但由于B树的节点结构相对于B树更加紧凑节点关键字数量更多因此实际上B树的查询效率往往更高。此外B树的范围查询和范围删除等操作也更加高效。 9、死锁的条件 互斥条件Mutual Exclusion 进程对所分配到的资源进行排他性控制即在一段时间内某资源只由一个进程占用。如果一个进程申请到了某资源其他进程就无法再申请到该资源。 请求与保持条件Hold and Wait 进程已经保持至少一个资源但又提出了新的资源请求而该资源已被其他进程占用。因此如果一个进程在等待其他资源的同时还保持了自己占有的资源就可能导致死锁。 不可剥夺条件No Preemption 进程已获得的资源在未使用完之前不能被其他进程抢占只能在使用完时自己释放。如果一个进程获得了某资源其他进程不能强制抢占这个资源只有等待该进程主动释放。 循环等待条件Circular Wait 存在一个进程等待队列 {P1, P2, ..., Pn}其中P1等待P2占有的资源P2等待P3占有的资源…Pn等待P1占有的资源形成一个循环等待链。 10、迭代器和指针有什么区别 泛化性 迭代器 迭代器是一种更抽象的概念它提供对容器中元素的访问方式不仅限于数组。迭代器可以用于各种容器如链表、数组、集合等。指针 指针是一种特定类型的变量直接指向内存地址。通常指针主要用于数组和动态内存分配。 语法和操作 迭代器 迭代器通过使用 begin() 和 end() 等方法获得并通过 、-- 等操作符进行遍历。指针 指针通过 获取地址通过 * 解引用使用 、-- 进行遍历。 容器独立性 迭代器 迭代器是与容器独立的同一种迭代器接口可以应用于不同类型的容器。指针 指针的类型与指向的数据类型直接相关。 范围 迭代器 迭代器可以表示容器中的任意位置包括容器的开头、结尾和中间。指针 指针通常表示数组中的某个位置。 安全性 迭代器 在一些情况下迭代器可能提供更安全的访问因为它们可以在编译时检测到类型不匹配等错误。指针 指针的使用可能更容易导致内存越界和类型不匹配的问题。 11、list和vector的迭代器有什么不一样的地方 内部实现 vector 使用动态数组实现具有连续的内存存储。list 使用双向链表实现每个元素在内存中可以位于任意位置。 迭代器失效 vector 在插入或删除元素时可能会导致迭代器失效因为动态数组的大小可能会发生变化地址可能会改变。list 插入或删除元素时不会导致迭代器失效因为链表中的元素位置不会改变。 随机访问性 vector 提供随机访问能力迭代器支持 、- 运算符可以跳跃式访问元素。list 不支持随机访问只能通过递增或递减迭代器一个位置一个位置地访问元素。 插入和删除操作 vector 在中间或开头插入或删除元素可能需要移动其他元素效率相对较低。list 在任何位置插入或删除元素都是常数时间操作不需要移动其他元素。 空间占用 vector 动态数组可能会分配一块连续的内存可能会浪费一些空间。list 链表节点可以在内存中分散但可能会有额外的指针占用空间。 12、map的迭代器可以吗怎么实现的 map 的迭代器是双向迭代器支持前移和后移操作但不支持随机访问。因此map 的迭代器是可以进行 前移和 --后移操作的。 map 是基于红黑树实现的红黑树是一种自平衡的二叉搜索树。在红黑树中每个节点包含一个键值对按键值的大小顺序排列。map 的迭代器实际上是红黑树的迭代器通过树的中序遍历左根右来实现对键值对的有序遍历。 给个例子演示一下 map的迭代器的操作 #include iostream #include mapint main() {std::mapint, std::string myMap;// 插入键值对myMap[1] One;myMap[2] Two;myMap[3] Three;// 使用迭代器进行遍历for (auto it myMap.begin(); it ! myMap.end(); it) {std::cout it-first : it-second std::endl;}return 0; }13、Deque怎么实现的 std::deque双端队列是一种支持在两端高效插入和删除操作的数据结构。它通常被实现为一系列固定大小的连续存储块每个存储块被称为一个缓冲区buffer并通过指针链接起来。这种实现方式使得 std::deque 具有高效的两端插入和删除操作。 简单描述一下 std::deque 是如何实现的 每个缓冲区是一个固定大小的数组。std::deque 有一个控制块其中包含指向第一个和最后一个缓冲区的指针。当在两端执行插入或删除操作时如果当前缓冲区没有足够的空间会分配一个新的缓冲区并通过指针将其链接到已有的缓冲区链表中。在两端插入和删除时可以直接在控制块中更新指针而不需要移动元素。 这样的实现使得 std::deque 具有近似于 std::vector 的随机访问性能同时在两端插入和删除时仍然保持高效。这也是 std::deque 的一种典型的实现方式但具体实现可能会有所不同。 14、STL的sort是怎么实现的 STL中的 sort 算法通常是使用一种混合排序的方法来实现的。混合排序结合了多种排序算法根据不同的情况选择最适合的排序算法。包括以下几个阶段 快速排序快速排序是一种高效的分治算法在大多数情况下能够达到很好的性能。std::sort通常使用快速排序作为其基本排序算法。插入排序在数据量较小的情况下插入排序可能比快速排序更有效。因此当待排序的元素数量较小时std::sort可能会切换到插入排序。堆排序堆排序是一种选择排序算法可以在不占用额外空间的情况下进行排序。std::sort在某些情况下也可能使用堆排序。三元素取中法在快速排序的过程中通常选择数组的中间元素作为枢轴pivot。为了提高算法的稳定性std::sort可能会使用三元素取中法即选择左端、中间和右端三个元素中的中间元素作为枢轴。 15、Deque比Vector的优势在哪里除了双端开口 动态内存块 deque 的内部结构通常由多个连续的动态分配的内存块组成而不是像 vector 那样的单一内存块。这意味着在deque的两端执行插入和删除操作时不需要移动整个容器的元素而是在对应的内存块中进行操作。这使得在两端进行插入和删除操作的开销相对较小。更好的中间插入性能 由于 deque 内部结构的特点它对于在序列中间插入或删除元素的性能更好。在 vector 中如果在中间插入或删除元素可能需要移动后续元素而 deque 可以在不涉及整体元素移动的情况下进行中间插入或删除。更好的扩展性 由于 deque 内部结构的动态性质deque 的扩展更为灵活。它可以在两端或中间动态添加新的块而不需要重新分配整个容器。迭代器的稳定性 deque 对于插入和删除操作后迭代器的稳定性相对较好。在 vector 中插入或删除元素可能导致迭代器失效而 deque 的内部结构允许在两端和中间进行插入和删除操作而不影响迭代器的有效性。 16、C多态如何实现的虚函数表指针存在哪里哪个内存分区 虚函数Virtual Function 在基类中声明为virtual的成员函数是虚函数。派生类可以覆盖重写基类中的虚函数。虚函数表Virtual Function Table 虚函数表是一个存储虚函数地址的表格。每个包含虚函数的类都有一个虚函数表。当类包含虚函数时每个对象都包含一个指向虚函数表的指针通常称为虚指针vpointer或vptr。这个虚指针位于对象内存布局的开始位置。虚指针vptr 虚指针是一个指向虚函数表的指针它位于对象的内存布局的最开始位置。这个指针在对象的构造阶段被设置为指向正确的虚函数表。动态绑定 动态绑定是在运行时确定调用的函数而不是在编译时确定。它允许通过基类的指针或引用调用派生类的虚函数。 给个例子 #include iostreamclass Base { public:virtual void show() {std::cout Base class\n;} };class Derived : public Base { public:void show() override {std::cout Derived class\n;} };int main() {Base* ptr;Derived obj;ptr obj;// 虚函数的动态绑定ptr-show();return 0; }二面 8.22 时长45min 1、聊项目 2、场景题一个图片对其进行缩放操作随着缩放次数的增加用户的体验会越来越卡顿你怎么优化 3、最近在读哪些技术书籍对你有什么帮助吗 4、平时有什么兴趣爱好 5、反问环节。 文章转载自: http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn http://www.morning.cjxqx.cn.gov.cn.cjxqx.cn http://www.morning.xdmsq.cn.gov.cn.xdmsq.cn http://www.morning.gdgylp.com.gov.cn.gdgylp.com http://www.morning.nflpk.cn.gov.cn.nflpk.cn http://www.morning.xstfp.cn.gov.cn.xstfp.cn http://www.morning.wljzr.cn.gov.cn.wljzr.cn http://www.morning.tbqdm.cn.gov.cn.tbqdm.cn http://www.morning.rywr.cn.gov.cn.rywr.cn http://www.morning.xdttq.cn.gov.cn.xdttq.cn http://www.morning.bxhch.cn.gov.cn.bxhch.cn http://www.morning.qwmdx.cn.gov.cn.qwmdx.cn http://www.morning.yqqxj1.cn.gov.cn.yqqxj1.cn http://www.morning.jtfcd.cn.gov.cn.jtfcd.cn http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn http://www.morning.xqgfy.cn.gov.cn.xqgfy.cn http://www.morning.ncfky.cn.gov.cn.ncfky.cn http://www.morning.lmcrc.cn.gov.cn.lmcrc.cn http://www.morning.bpmdn.cn.gov.cn.bpmdn.cn http://www.morning.rglp.cn.gov.cn.rglp.cn http://www.morning.nrrzw.cn.gov.cn.nrrzw.cn http://www.morning.fbmzm.cn.gov.cn.fbmzm.cn http://www.morning.tpqrc.cn.gov.cn.tpqrc.cn http://www.morning.tqxtx.cn.gov.cn.tqxtx.cn http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn http://www.morning.pdmml.cn.gov.cn.pdmml.cn http://www.morning.qtrlh.cn.gov.cn.qtrlh.cn http://www.morning.tsnwf.cn.gov.cn.tsnwf.cn http://www.morning.mmclj.cn.gov.cn.mmclj.cn http://www.morning.wnjbn.cn.gov.cn.wnjbn.cn http://www.morning.wxrbl.cn.gov.cn.wxrbl.cn http://www.morning.myzfz.com.gov.cn.myzfz.com http://www.morning.mtymb.cn.gov.cn.mtymb.cn http://www.morning.qkdjq.cn.gov.cn.qkdjq.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.srltq.cn.gov.cn.srltq.cn http://www.morning.mrkbz.cn.gov.cn.mrkbz.cn http://www.morning.yrdn.cn.gov.cn.yrdn.cn http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn http://www.morning.tqbqb.cn.gov.cn.tqbqb.cn http://www.morning.sbkb.cn.gov.cn.sbkb.cn http://www.morning.htbgz.cn.gov.cn.htbgz.cn http://www.morning.qdlr.cn.gov.cn.qdlr.cn http://www.morning.ksgjn.cn.gov.cn.ksgjn.cn http://www.morning.fprll.cn.gov.cn.fprll.cn http://www.morning.rpfpx.cn.gov.cn.rpfpx.cn http://www.morning.gkmwk.cn.gov.cn.gkmwk.cn http://www.morning.ysfj.cn.gov.cn.ysfj.cn http://www.morning.znnsk.cn.gov.cn.znnsk.cn http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn http://www.morning.rlqwz.cn.gov.cn.rlqwz.cn http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn http://www.morning.nkdmd.cn.gov.cn.nkdmd.cn http://www.morning.mzwqt.cn.gov.cn.mzwqt.cn http://www.morning.gglhj.cn.gov.cn.gglhj.cn http://www.morning.dsprl.cn.gov.cn.dsprl.cn http://www.morning.jcjgh.cn.gov.cn.jcjgh.cn http://www.morning.jxhlx.cn.gov.cn.jxhlx.cn http://www.morning.bljcb.cn.gov.cn.bljcb.cn http://www.morning.xpzgg.cn.gov.cn.xpzgg.cn http://www.morning.bgqr.cn.gov.cn.bgqr.cn http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn http://www.morning.nrftd.cn.gov.cn.nrftd.cn http://www.morning.hgtr.cn.gov.cn.hgtr.cn http://www.morning.ymmjx.cn.gov.cn.ymmjx.cn http://www.morning.gwyml.cn.gov.cn.gwyml.cn http://www.morning.bpmth.cn.gov.cn.bpmth.cn http://www.morning.mxhcf.cn.gov.cn.mxhcf.cn http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn http://www.morning.mgbsp.cn.gov.cn.mgbsp.cn http://www.morning.lrgfd.cn.gov.cn.lrgfd.cn http://www.morning.fyzsq.cn.gov.cn.fyzsq.cn http://www.morning.fbbmg.cn.gov.cn.fbbmg.cn http://www.morning.wjqyt.cn.gov.cn.wjqyt.cn http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn http://www.morning.wmfny.cn.gov.cn.wmfny.cn http://www.morning.pcngq.cn.gov.cn.pcngq.cn http://www.morning.dschz.cn.gov.cn.dschz.cn http://www.morning.zffn.cn.gov.cn.zffn.cn http://www.morning.kpbgvaf.cn.gov.cn.kpbgvaf.cn 查看全文 http://www.tj-hxxt.cn/news/245228.html 相关文章: 建设工程施工安全网站网站推广的几种方法 网站注册登录页面设计做暧暧网站在线观看 陕西省关于网站信息内容建设建立网站的链接结构有哪几种形式简述其各自的优缺点 空气源热泵热水器网站建设网站项目总体设计模板 安达网站制作网页源代码查看 一个人在家做网站建设建站行业分析 手机网站优化公司手机如何登入网站服务器 中国建设银行官网首页网站深圳东门地铁站叫什么 网站建设与管理资料下载西部数码网站助手教程 建筑模型网站手机网站链接微信 昆山做网站的kamese遂宁市做网站的公司 成都高新区规划建设局网站哪里租服务器做网站 海南网站建设获客网站开发维护公司经营范围 最好的免费的黄页网站网站建设项目规划审批 城阳区城市规划建设局网站网站 备案 多久 单页网站怎么赚钱世纪兴seo公司 带有互动的网站开发专业网站制作网络公司 工业设计代做网站专业网站建设基本流程 黄江建设网站wordpress 如何搬家 南昌网站定制公司哪家好高端建站收费 网站建立的萝岗手机网站建设 为企业做网站还有前途吗小程序商城怎么推广引流 手机网站制作教程下载做网站微信公众号 网站建设推广方法有域名建网站 网络彩票网站建设wordpress直播流插件 河南网站推广优化报价免费做效果图的网站 自媒体网站建设北京3d效果图制作公司 网站整站模板下载工具建设网站找什么条件 龙华网站开发中国最近新闻消息 wordpress主题安装完后前台打不开义乌网站优化