news 2026/9/12 19:04:02

C++笔试题复盘:从虚函数到快速幂的核心考点拆解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++笔试题复盘:从虚函数到快速幂的核心考点拆解

前阵子整理移动硬盘,翻出2017年秋招期间的一份笔试题,是美图当年C++开发工程师的校招试卷。那年互联网公司招生还没现在这么卷,但美图这种做影像工具类App的技术栈里C++占了很大比例,笔试题目出得相当有代表性,基本把C++求职者的基本功、算法底子和工程意识都覆盖到了。我后来拿这份卷子跟不少公司的C++校招题做过对比,发现它的考察逻辑很能说明问题——不是死抠语言冷门语法,而是看你能不能把语言、算法、操作系统这些知识串起来解决实际问题。

这篇东西适合正在准备C++校招或社招笔试的人看,也适合那些自认为C++基础不错、但想系统自查一遍的人。我不打算把原题原样贴出来然后给标准答案(那份试卷网上还能搜到,但题目本身并不重要),而是把这套试卷背后真正想考的东西拆开讲清楚,每个考点配当时的答题思路、正确的解题姿势,以及我踩过的坑。看完之后你再去刷任何公司的C++笔试题,应该都能一眼看穿出题人想考什么。

1. 笔试的整体结构与考察思路

1.1 从题型分布反推美图的岗位要求

美图2017年这份C++笔试试卷,当时我印象最深的不是某道题特别难,而是它的题型配比很“互联网公司”——不是纯算法题海,也不是纯语言理论,而是三者混搭。整体上看分为三块:客观选择题(大概20到25道)、简答/设计题(三到五道)、在线编程题(两道到三题)。

选择题覆盖的全是C++语言本身的硬知识点:const关键字的各种用法、指针和引用的区别、构造函数与析构函数的调用顺序、虚函数机制、类型转换方式、内存分配相关等。这些题目并不偏,但每道题都有“陷阱选项”——不是让你背结论,而是要看你是不是真懂底层原理。比如常见的一道题:在继承体系中,构造和析构的调用顺序是什么?很多靠背题的人会记得“先构造基类再构造派生类”,但把“先析构派生类再析构基类”写反,或者在虚继承场景下就蒙了。这类题的价值在于:能写对的人大概率真的调试过复杂继承链,而不是只看过书。

简答题更像是考查工程理解力。我记得有一道让阐述“为什么C++需要智能指针,能不能用裸指针完全替代”,表面上是问RAII,实际上是在考察你写代码时有没有内存安全和异常安全的概念。另一道是让写出一个线程安全的单例模式,并说明推荐的实现方式的理由。这两个题放到今天依然是C++面试的高频题,因为几乎所有C++服务端岗位都躲不开这两件事:资源管理和并发控制。

在线编程题才是拉开差距的地方。一般有一道算法题、一道偏应用的题目。算法题那年在很多公司都出现了快速幂相关变体,美图这份卷子也类似。第二题通常偏向字符串处理或链表操作,比如“反转字符串中的单词顺序”或“合并两个有序链表”,难度不高但要求一次编译通过、边界处理好,否则测试用例过不了。

1.2 这套出题逻辑想筛选什么样的人

我复盘完这套卷子,最大的感受是:美图的出题人想招的不是“知道很多C++名词”的人,而是“真写过不少C++、遇到问题能自己查原因”的人。选择题考察语言细节是否扎实,简答题考察有没有工程素养,编程题考察动手能不能把想法转成无bug的代码。三者缺一不可。

2017年正是移动端影像技术快速发展的阶段,美图的App核心底层涉及大量图像处理、编解码、跨平台引擎开发,C++作为高性能底层语言,岗位责任就是保证性能、保证稳定性、解决内存问题。所以那些看似零散的选择题,实际上都在为这些真实工作场景埋伏笔。你想想,如果一个人连虚函数表的基本机制都解释不清楚,那他真去维护一个基于多态的渲染引擎时肯定寸步难行。

另外,这份试卷还有一个隐藏考点:时间管理。题量不小,选择题部分又纠结细节,很多人做到算法题时只剩十几分钟。我交卷时旁边就有人选择题做得特别仔细,导致最后编程题完全没写。这个情况在真实考试里无数次上演,所以我对准备C++笔试的朋友始终一个建议:先扫全卷,按分值分配时间,编程题永远要留足40分钟以上。

2. C++语言基础考点逐题拆解

2.1 字符串数组初始化与constexpr边界条件

知识点里高频到绕不开的两个小点:char数组的初始化和constexpr约束,当年试卷上都有。先说字符串数组初始化,别看题目简单,坑是真不少。C++里字符串初始化有几种写法:

// 方式一:字符数组 + 字符串字面量 char str1[] = "hello"; // 方式二:char指针指向字符串字面量 const char* str2 = "hello"; // 方式三:标准库string std::string str3 = "hello";

sizeof和strlen的结果,这是选择题经典里的经典。对于char str1[] = "hello";sizeof(str1)是6,因为末尾还有一个隐藏的'\0'strlen(str1)是5。但换成const char* str2 = "hello";sizeof(str2)在64位系统上是8(指针大小),strlen(str2)才是5。当年这张卷子就在这里挖了个坑,选项里混着4、5、6、8四个数字,只要没亲手打印过,很容易凭感觉选错。

再说constexpr,这是考察“知不知道C++版本演进”的题。constexpr是C++11引入的关键字,到了C++14放宽了函数体限制,C++17又支持了if constexpr编译期分支,C++20才支持constexpr virtual等更复杂的特性。试卷当时不会考到20标准(毕竟2017年C++17才刚刚发布),但常考的是:constexprconst有什么本质区别?简单记:const承诺“这个变量在作用域内不变”,但它可以是运行期才知道的值;constexpr则强制“必须在编译期就能算出值”。所以下面这段代码:

int n; cin >> n; const int a = n; // 合法 // constexpr int b = n; // 编译错误:n不是常量表达式

为什么需要constexpr?因为某些场景必须在编译期就确定值:数组大小、模板非类型参数、switch的case标签等。C++11之前的做法是用宏或enum hack,constexpr就是给C++一个类型安全的编译期常量机制。现在很多年轻人写代码不知道这个区别,一问就说“constexpr就是更强的const”,但那不够准确,严格来说它们是不同维度的概念——一个管“编译期可求值”,一个管“运行期不可变”。

从这里引出的另一道高频选择题是数组大小能不能用变量:int n = 10; int arr[n];这种写法在标准C++里是非法的(VLA是C99的特性,C++标准从未正式采纳),但很多编译器(比如GCC)做了扩展支持。如果你目标平台是MSVC,这段代码会直接报错。这个知识点在当年的笔试里也有类似变体,属于“看似写过但又没完全写对”的典型考点。

2.2 虚函数、多态与内存布局的底层细节

笔试选择题里最绕不开的肯定是虚函数,这几乎是C++岗位的“见面礼”。面试官和试卷都爱问:含有虚函数的类,对象内存长什么样?这题的关键是理解虚函数表(vtable)和虚指针(vptr)。

我一般建议用“班级点名册”来理解:每个含有虚函数的类,编译器都会偷偷给类对象加一个指针成员,这个指针指向一张函数地址表。当调用虚函数时,程序先去查这张表,拿到真正的函数地址再跳转。所以多态能成立,依赖的正是这层“间接寻址”。没有virtual的普通函数,编译期就决定了调谁;有virtual的,要等运行期根据对象的实际类型去查表。

笔试如果出得更细,会追问“一个对象里有多个虚函数,占用几个虚表指针”。答案是:一个类一个虚表指针(不考虑虚继承的额外复杂度),不管这个类里有多少个虚函数。虚函数再多,也只是虚表里的条目变多,对象本身只多一个指针的大小。这个问题我当时答的时候就差点选错,因为我一度以为每个虚函数都要占一个指针空间。

还有一道跟虚函数强相关的简答变体:构造函数里能不能调用虚函数?答案是“不要指望它能多态”。在构造过程中,对象的动态类型被认为是“当前正在构造的这个类”,所以派生类构造时还没构造完,虚函数调用会解析到当前类的版本,而不是最派生类的版本。这是C++里一个很经典的陷阱。如果你在基类构造函数里调用了一个虚函数,实际执行的是基类版本,哪怕你创建的是派生类对象。

2.3 指针、引用、内存管理的一连串追问

指针和引用的关系,也是那段时期几乎所有C++试卷都爱出的一道选择题。我总结最干净的一句话:引用是“变量的别名”,指针是“保存地址的变量”。所以引用必须初始化、不能重新绑定;指针可以改变指向、可以为nullptr。底层实现上,引用往往也是一个指针的内存占用和地址传递,但语言层面限制死了它的行为方式。

另一组必问题:new[]delete[]为什么必须配对?如果只用delete回收new[]出来的数组,会发生什么?对内置类型(如int数组)来说,很多实现下侥幸不崩,因为不需要调用析构函数;但对于自定义类型的数组,那就会导致前面的元素被析构而后面的元素析构函数不调用,甚至直接崩掉。所以正确写法永远是一一对应。这份试卷里虽然没有直接出这题,但在简答题里问智能指针时,会延伸到“unique_ptr管理数组需要用unique_ptr<T[]>而不是unique_ptr<T>”,否则析构时会调用delete而不是delete[],于是又回到这个坑。

内存管理这个考点,在美图这种做客户端底层开发的公司尤其重要。他们的代码要跑在低端Android机上,内存动辄只给几十MB给App,一个图片解码模块如果出现几个字节的泄漏,运行一晚上就崩。所以相关题目不是空穴来风,而是工作场景直接映射。

3. 算法与数据结构题目实操复盘

3.1 排序算法:冒泡、选择、快速排序的边界控制

2017年前后的C++笔试,在线编程题很少直接让你“写一个冒泡排序”,但选择题里经常会拿排序算法做背景。比如:冒泡排序在最好情况下的时间复杂度是多少?如果已经提前加了“无交换提前终止”的优化,最好情况是O(n),否则是O(n^2)。很多人一看到冒泡就条件反射写O(n^2),丢了那题的分。

真正笔试喜欢考的还是快速排序,尤其是“快排为什么最坏是O(n^2),怎么避免”。最坏场景是每次选的基准值都正好是当前区间最大或最小值,导致区间极不平衡。解决办法是“三点取中”或者随机选基准。有些公司笔试会直接让你手写三路快排,这个思路在大量重复数字时很有用。美图这套卷子算法题虽然没直接考快排,但我在同期的其他公司卷子里见到很多次。

选择排序则更基础,它的特点是交换次数少(最多n-1次),但比较次数固定为n(n-1)/2,不管数据是否有序都是这个值。这也是选择题一个常见选项设计。当年我看到选项里有“选择排序在最优情况下是O(n)”这种干扰项,就是拿来考大家是不是真理解选择排序“无脑找最小值”的本质。

3.2 快速幂与整数运算的极致性能

“快速幂算法”这个热搜词不是偶然出现的,它确实是笔试算法题里的常青树。美图2017年笔试的编程题我印象里就有类似场景:求一个整数的n次幂,n可能很大,要求不能直接用pow。正确答案就是二分快速幂,时间复杂度从O(n)降到O(log n)。

快速幂的思路说白了就是“指数二进制展开”。比如要算3^13,把13写成二进制1101,也就是3^(8+4+1),所以只需要算3^1、3^4、3^8这些2的幂次,把它们相乘即可。核心循环体非常短:

long long quickPow(long long a, long long n, long long mod) { long long res = 1; while (n > 0) { if (n & 1) res = res * a % mod; a = a * a % mod; n >>= 1; } return res; }

这里特别要注意取模。笔试题目经常会说“结果对1e9+7取模”,因为1e9+7是质数且足够大,可以在加减乘过程中安全使用int64避免溢出。当年有同学写完快速幂忘记取模,大数直接溢出变负数,测试用例全挂。如果你现在刷题,请一定养成“看到幂运算就条件反射取模”的习惯,这个可以救命。

还有一个易错点:n的数据类型。如果题目说n最大可达10^18,用int就炸了,必须用long long。笔试环境里编译器不像IDE那么智能,类型错了不会给警告,只能靠自己的敏感度。

3.3 字符串处理与数学题的常见变体

字符串类编程题在美图卷子里出现过“字符串转数组”相关方向。不要小看这类题,LintCode/LeetCode上easy难度的题到了笔试环境就变成“一次通过率不到一半”的绊脚石,因为边界条件非常多。比如把字符串按逗号分隔转成int数组,要处理空串、连续分隔符、前导空格、数字溢出等。

代码层面有一个小技巧:用std::istringstream配合std::getline读取分隔符分割的字符串:

std::string input = "1,2,3,4,5"; std::vector<int> nums; std::stringstream ss(input); std::string token; while (std::getline(ss, token, ',')) { nums.push_back(std::stoi(token)); }

这里又引出一个C++11以后很实用的类——std::stringstream。笔试中经常用它做类型转换或字符串分割,比手动遍历字符要少写很多边界判断。但注意std::stoi在遇到非法字符串时会抛异常,笔试环境下异常会导致程序崩溃,所以要么自己先检查字符串合法性,要么用std::strtol这类C风格函数,它可以通过endptr判断是否转换成功。

数学题方面,热搜词里有个“n个整数的最小公倍数怎么求c++”。这类题在笔试中一般作为简单题出现,知识点是“两数最小公倍数 = 两数乘积 / 最大公约数”,gcd用辗转相除法。多个数的最小公倍数就反复迭代:先求前两个的lcm,再和第三个算,以此类推。这个题容易踩的坑是乘法溢出——如果直接a * b / gcd(a,b),a和b都接近int上限时,乘积会先溢出。正确的姿势是先除后乘:a / gcd(a,b) * b。这种细节就是拉开差距的地方,出题人不会那么好心提醒你“小心溢出”。

4. 多线程、设计模式与综合应用类题目

4.1 C++多线程与ABA问题:从底层到工程

多线程在2017年的C++笔试里已经是重点了,现在更是标配。选择题会问std::thread能不能拷贝、std::mutex的lock和try_lock区别等;简答题可能会延伸到“什么是竞态条件、怎么加锁保证线程安全”;更进阶的会聊无锁编程。

有关“ABA问题c++”这个热搜词,出现在C++面试中非常合适。ABA问题是无锁编程里一个著名的坑:假设共享变量当前值是A,线程1准备把它改成B,但被挂起;线程2先把A改成B,再把B改成A;这时候线程1恢复执行,CAS比较发现值还是A,就误以为没人动过,于是执行修改。但在这个“A→B→A”的过程中,数据的语义可能已经被破坏了。

当年美图的试卷没有直接考无锁编程(毕竟校招应届生能写明白锁就不错了),但有一个类似题考了“单例模式线程安全怎么保证”——这本质上就是并发控制。常规做法有三种:懒汉式加锁、饿汉式静态初始化、Meyers Singleton(函数内静态局部变量)。C++11以后,函数内static局部变量的初始化是线程安全的,所以最简洁的写法是:

class Singleton { public: static Singleton& getInstance() { static Singleton instance; return instance; } private: Singleton() = default; Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; };

这道题在笔试卷子里出现频率极高,如果你能在这个基础上再答一句“C++11标准保证magic static的初始化线程安全,所以不需要双重检查锁”,往往能让阅卷人眼前一亮。但要注意,有些公司老代码还在用C++98标准,那里的静态局部变量初始化不保证线程安全,所以如果你写的是“兼容C++98项目”,就不能这么搞。

4.2 回调函数与设计模式:笔试会怎么考

回调函数在C++笔试中常以两种形式出现:一种是让你解释回调是什么,另一种是给一段代码让你指出哪里用了回调。以前C的回调靠函数指针,C++里更推荐std::function和lambda表达式。比如“在按钮点击库中注册一个点击事件处理函数”这个场景,你可以写成:

void onClick(int x, int y); button.setCallback(std::bind(onClick, std::placeholders::_1, std::placeholders::_2)); // 或者C++11之后的lambda写法 button.setCallback([](int x, int y) { // 处理点击 });

出了回调之外,设计模式这块美图笔试也考了“观察者模式”或者“策略模式”的概念,只不过不是直接说“请写出观察者模式的代码”,而是给一个图像处理滤镜的应用场景,让你设计不同滤镜可插拔的架构。这其实就是在考策略模式。核心思路是定义统一接口,不同滤镜实现不同类,运行时用基类指针数组统一管理。面向对象三大特性的“多态”在这里得到应用。

我在复盘这份试卷后,对设计模式这块的建议是:不要死记模式结构图,而是每个模式都配一个实际工程例子。比如“策略模式”配“多种滤镜切换”、“观察者模式”配“进度条监听图片处理进度”、“工厂模式”配“从文件扩展名创建对应的解码器”。面试官听到你举例的时候如果是一个真实的、来自工作或自己项目的例子,可信度会高很多。

4.3 综合场景题:小游戏与网络模型

热搜词里那些“c++小游戏”、“物流网络”、“消息传递(news)”看着像是五花八门的题目来源,但它们某种程度上恰恰是C++笔试综合题的素材库。像“C++小游戏”,经常被用来考察面向对象设计能力。校招笔试可能会让你写一个“贪吃蛇”或“俄罗斯方块”的类设计,不是让你实现完整游戏,而是看你怎么拆类:蛇身用什么结构存、移动逻辑放哪个类、碰撞检测放哪层。我实际面试时遇到过类似的设计题,我的经验是把“数据”和“表现层”分开,别在一个类里又存数据又画界面,这样后续扩展才方便。

另一个方向是网络或图论题,比如热搜词里的“物流网络”和“消息传递(news)”,这类题目本质上是在考图的遍历或最短路。美图2017年的卷子虽然没有考这类题,但从那个时间段开始,不少公司开始在C++题里混合数据结构和算法题,比如“有n个城市和m条线路,求某个城市到其他城市的最短时间”,标准解法就是Dijkstra或BFS。如果你报的是C++服务端方向,这类图论题可能比图像处理更贴近面试方向。

所以我建议大家准备笔试时,不要只盯着语言细节,《算法》教材里的常见题型(排序、栈、队列、二叉树、图、动态规划)至少要过一遍。C++语言题决定你能不能过第一轮筛选,算法题决定你排名能不能进前20%。

5. 常见失分点与笔试实战避坑

5.1 环境配置与编译细节导致的非技术失分

笔试不光是考你会不会,还考你在“不熟悉的环境”里能不能顺利写代码。2017年那会儿很多公司笔试平台还是网页编辑器,没有代码补全、没有编译错误提示,很多人平时在VSCode或VS里写代码依赖智能提示,到了笔试页面直接卡壳。热搜里的“vscode 配置c/c++环境”、“vscode 配置c++”—这些都是当下新手入门的痛点,谁能想到放到笔试现场,环境问题同样致命。

我的做法是:备考阶段就逼自己在“裸编辑器”里写C++代码。不开补全、不开编译实时报错,写完再放进编译器检查。这样训练一个月,笔试时手写代码的准确率会明显提升。另外,笔试前一定要确认目标平台用的什么编译器,比如有些在线平台用GCC,而本地Windows上用MSVC,两者在很多细节上行为不同(比如#include <bits/stdc++.h>只有GCC标准库里有,MSVC就没有)。如果笔试题涉及这种可移植性差异,提前知道能省不少时间。

还有一个看着跟技术无关但非常关键的点:留意题目要求的输入输出格式。很多C++笔试编程题采用标准输入输出(stdin/stdout),而不是读文件。新手最常见的问题是忘了#include <iostream>、忘了using namespace std、或者输出多了打印调试信息导致格式错误。这些在IDE里跑没问题,但在在线评测平台就是0分。我当年就犯过这种错,白白丢了一道题。

5.2 时间分配与检查清单

复盘完整份试卷,我总结了一套适合自己的笔试时间管理方案,这里分享给你。总时长如果是120分钟,我一般这样分配:

  • 前10分钟:快速浏览整张试卷,标记出每道题的分值和难易程度。
  • 接下来40分钟:做选择题和简答题,遇到卡壳超过两分钟的题先跳过,绝不恋战。
  • 中间20分钟:把简答题中涉及代码的题目(比如写单例)先做掉,因为这种题只要掌握了就是固定送分题。
  • 最后40到50分钟:全力做在线编程题,从分值最高或最有把握的开始。
  • 最后5分钟:检查所有代码有没有编译问题、有没有多余输出、边界条件是否处理。

这个分配不是万能的,但对“题量偏大”的C++笔试非常适用。因为选择题往往一道只有一两分,而编程题一道能占到20到30分,为了一个选择题的细节纠结到编程题没时间写,是最亏的。

我当年考这份卷子时,最后编程题有一题我本来没思路,但因为留足了时间,冷静下来把问题拆分后居然做出来了。笔试考的不只是知识,还有“在有限时间内调度自己能力”的元技能。这也是为什么我建议平时刷题就严格计时,而不是漫无目的地磨蹭。

5.3 做完题后的复盘心得

笔试结束不代表结束,真正的价值在复盘。我后来拿到美图的面试通知(虽然后来因为薪资问题没去),但这份卷子我保存了下来,每次给别人讲C++面试,都把它当成一个典型的“能力体检表”。你会发现,做题做错的地方往往不是因为你不知道某个知识点,而是因为你从来没有亲手验证过。比如sizeofstrlen那个坑,只要你在本地敲一遍,一辈子都忘不了;constexprconst的区别,只要你亲手写过一次编译失败的代码,就永远不会再混。

这也是我给所有准备C++笔试的人最终的建议:不要只看书、只看面经,一定要动手。C++是一门非常讲究“亲手感受”的语言,很多报错信息、内存行为、标准库特性,只有你真实碰过、踩过,才能在笔试这么紧张的环境下形成条件反射。那些热搜词里的“c++八股文”、“c++面试题”给你的是“数据”,但真正的竞争力来自你对这些数据做过多少次验证和思考。

回头来看,2017年美图这份试卷的很多考点,到今天依然是C++岗位笔试的高频题:虚函数、内存管理、多线程、智能指针、设计模式、基础算法。语言标准从C++11走到C++17再到C++20,但考察的内核从来没有变过,就是“你能不能写出一份健壮的、可维护的、高性能的C++代码”。准备好了这些,再去做任何一份C++笔试试卷,你都会发现,它只是同一场考试的不同马甲罢了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 11:40:21

用eBPF和IMA构建Linux内核级执行阻断:从ring-0到LSM的轻量安全实践

如果你在 Linux 上做安全产品&#xff0c;最容易被问到的问题是&#xff1a;防护模块是不是必须写成内核驱动&#xff0c;进 ring-0&#xff1f;按照传统思路&#xff0c;答案接近“是”。因为你要拦截执行、检查文件、杀掉恶意进程&#xff0c;没有内核特权好像就做不了真正意…

作者头像 李华
网站建设 2026/9/6 11:59:09

欢聚时代PHP校招笔试全解析:基础内功与实战避坑

这套“欢聚时代2017校招笔试题目&#xff08;PHP工程师类&#xff09;A卷”&#xff0c;我前前后后看了不下五遍。当时是帮一个学弟做考前突击&#xff0c;他把卷子拍照发我&#xff0c;我一边看一边感慨&#xff0c;这份卷子的出题人绝对是懂PHP的&#xff0c;没有一味追求偏题…

作者头像 李华
网站建设 2026/9/6 17:33:53

第295篇 PointNet系列——3D点云处理的深度学习之路

6D位姿估计聊完了&#xff0c;这篇讲3D点云处理。机器人用激光雷达和深度相机获取的3D数据就是点云——一堆三维坐标点。怎么让神经网络理解这些无序的、不规则的点集&#xff1f;PointNet给出了答案。 PointNet是2017年Charles Qi等人提出的&#xff0c;第一次用深度学习直接…

作者头像 李华
网站建设 2026/9/6 14:08:34

TVA-World架构:具身智能全栈算法研究新突破(1)

前沿技术探索&#xff1a;TVA智能体&#xff08;简称TVA&#xff09;TVA智能体&#xff08;亦称“AI智能体视觉”或“TVA视觉智能体”&#xff09;是依托Transformer架构与“因式智能体”理论构建的通用视觉技术体系。它有机融合深度强化学习&#xff08;DRL&#xff09;、卷积…

作者头像 李华
网站建设 2026/9/7 0:06:29

Nova-Quantum:裸机LLM内核无操作系统启动与推理解析

Nova-Quantum 是一个很有意思的项目&#xff1a;一个约 41 MB 的 ISO 镜像&#xff0c;启动后不进入 Linux、不加载 Windows&#xff0c;而是直接进入一个自定义内核&#xff0c;由这个内核自己完成大语言模型的加载和推理。项目副标题里的 "Bootet Ohne OS" 是德语&…

作者头像 李华
网站建设 2026/9/7 0:06:25

网络化监控DVR从入门到实战:远程访问、端口映射与存储配置全攻略

简介&#xff1a;这是一套专为IE浏览器设计的网络视频监控系统DVR插件资源包&#xff0c;面向安防集成工程师、嵌入式Web前端开发者及视频监控平台二次开发人员&#xff0c;解决IE环境下通过网页远程访问海康等主流DVR设备的兼容性与功能调用问题。压缩包共61个文件&#xff0c…

作者头像 李华