[讨论] 本仓库的建议、讨论等方面
huihut opened this issue · comments
这个仓库原本只是我的个人笔记,鉴于越来越多人关注,而本人技术略渣,希望大家可以提些建议,或者可以在这个 issue 讨论些关于面试方面的东西。比如:
- 需要增加什么知识点?
- 如何分类排版才更高效地复习与检索?
- 如何勘误,发现错误如何改正?(new issue、pull)
- 如何提交或添加你的知识点、总结、面经?(new issue)
- 等等
(本 issue 只涉及讨论、建议、疑问等方面,内容勘误、提交贡献还请新建一个 issue 或 pull)
面试时发现自己没啥项目经验,希望增加一些项目,只需给出项目的链接即可。
@96chh 看到你的一个repo,疑似广工校友? : )
关于项目经验,这个在简历中还是写自己做过的项目好,这里有几个可以看看:
- **独立开发者项目列表 ,里面的很多项目都是开源的,都是应用而非工具。
- Awesome C++,C++相关的轮子、工具、框架、库
- 有了这个列表,程序员不愁没练手的小项目了,一些项目 Idea
另外,这个我就不加到仓库里了,因为这个太因人而异了,和面试知识关系不大。
希望能帮到你。
@kelvinkuo 已添加,可以看看是否有错误
“带纯虚函数的类叫虚基类”这一描述怕是有误。虚基类,virtual base class,对应的概念是虚继承,跟纯虚函数没啥关系,含有纯虚函数的类叫抽象类或抽象基类,abstract base class,还有其他叫法么?
新增语雀镜像仓库(C/C++ 面试基础知识总结),让想要右侧目录却又不喜欢装插件的朋友有了更多选择,同时语雀支持导出PDF、Word等功能。
Q:为什么 readme 文件这么长?
A:一级页和多级页各有优劣,但在快速查找知识点 (如电话面) 和全文搜索的时候,一级页有着多级页无法比拟的优势,因此本仓库的知识点主要集中在 readme 这个一级页中,所以 readme 才这么长。
💡 许多朋友都觉得 readme 实在太长了,因此现在做了两个版本:
默认主页面是合起来的 📘 目录,习惯了原来全部展开的朋友在 📖 README Details 页面阅读就好了。
💡 推荐使用右侧目录 jawil/GayHub TOC 导航,三秒定位知识点。
💡 还有把之前在顶部的这串内容也删了:
📚 C/C++ 面试基础知识总结,只为复习、分享。勘误新增请 Issue、PR,建议、讨论请移步 issues/12,排版使用 中文文案排版指北,版权协议遵循 CC BY-NC-SA 4.0。
萌即正义!
简洁即正义!
@lorenzorut 是常指针,不一定指向常对象
int a = 1;
const int b = 2;
const int *c = &a; //正确
c = &b; //正确
*c = b; //错误
嗯,明白你说的意思。我刚表述的也不是指一定指向“常对象”,我是把“常指针” 当成 “指针常量”了,然后发现原来你说的是“常量指针”,所以又删了。不过runoob的链接里面关于“指针常量”的表述反倒有误。
不过,关于“void function3(char* const Var); // 参数指针为常指针” 是否有误?
此处指针应为“指针常量”,而非“常量指针“? @huihut
又详细了解了下,发现“常指针” 等价于 “指针常量”,所以“void function3(char* const Var); // 参数指针为常指针” 此处无误。Var指针为指针常量,即常指针,指向地址不能更改,指向地址的内容可以修改。
void function()
{
// 对象
A b; // 普通对象,可以调用全部成员函数
const A a; // 常对象,只能调用常成员函数、更新常成员变量
const A *p = &a; // 常指针
const A &q = a; // 常引用
...
}
“const A *p = &a; // 常指针” 该处,仍然有误,p指针指向一个“常对象”,属于“常量指针”,指向内容不能更改,指向地址可以随意更改,而非“常指针” @huihut
@lorenzorut 常指针(const pointer) 等于 常量指针(const pointer) 不等于 指针常量(pointer to const)
我检查了一遍,仓库的 const 使用并没有错,你再想想或者网上找找教程吧。
另外,勘误最好创建一个新的 issue。
感谢分享
在数据结构的链式结构里的linklist with head中,enqueue_Lq函数里,当L==null和当l->next ==null的逻辑是不是错了
@a74731248 已转到 issues#34 交流。
InsertSort第一层循环结束条件有错误。
@xindelvcheng 已改,感谢。
C实现C++类无法打开,显示404
@Medivhcrf 已更新,感谢。
建议加上多线程和并发编程
的相关内容。如果内容太多,希望能列出一个相关书单,这样也可以弥补c++ primer的缺失。
@hbsun2113 好的,之后会考虑安排上,感谢。
details里面还有好多没展开啊,能否全部展开呢想打印一下,语雀还没更新。
@fighterhit 现在 details 展开了,语雀弃用,改用:https://www.huihut.com/interview
可增加一下:linux下,内存泄露、踩内存、句柄泄露、死锁、死循环等问题检测的方法
虚函数在子类里面也可以不重载的;但纯虚函数必须在子类去实现。
其中的重载应该改为重写(override)吧。而且子类也不一定要实现纯虚函数吧,只是重写纯虚函数是实例化的前提。
Effective C++ 条款31,“如果能过够” 是否应该是 ”如果能够“。
可以加上select,poll,epoll等的比较,还有redis等面试常问的
数据库关系数据理论里3NF应该是“消除 2NF 非主属性对码的传递函数依赖”
int count = 0; // 全局(::)的 count
class A {
public:
static int count; // 类 A 的 count(A::count)
};
int main() {
::count = 1; // 设置全局的 count 的值为 1
A::count = 2; // 设置类 A 的 count 为 2
int count = 0; // 局部的 count
count = 3; // 设置局部的 count 的值为 3
return 0;
}
这里需要加上int A::count = 2;
, 必须先在类外初始化吧
@DiDongDongDi 已改,感谢
const A *p = &a; // 常指针
此应该为指针常量或指向常量的指针(推荐)(pointer to const),而非常量指针(推荐)或常指针(const pointer)。
PS:当然实际pointer to const是指不能通过该指针修改指向的值,指向的值如果不是const依旧可以修改。
例子:
int a = 1;
int *b = &a;
const int *c = &a;
cout << *b << *c << endl; //11
*b = 2;
//*c = 2; //wrong
cout << *b << *c << endl; //22
const A &q = a; // 常引用
常引用用词不好,它的常跟常指针的常完全是相反意思,应该用指向常量的引用(reference to const),然而const reference毫无意义跟reference没区别,这里用词就很奇怪了。
另外建议规范和解释用词,本来it名词中文翻译就极其混乱,不同书中这2个概念都是不同的,甚至是反的,甚至有另外一套说法。
真是不想吐槽IT名词翻译之混乱了。
@VoidxHoshi 感谢,再次修改了下 const,不整那么多乱七八糟的,也在这里汇总一下:
- 指针
- 指向常量的指针(pointer to const)
- 自身是常量的指针(常量指针,const pointer)
- 引用
- 指向常量的引用(reference to const)
- 没有 const reference,因为引用本身就是 const pointer
建议将readme里面的图片链接换成国内链接,不然没有梯子的同学打开后可能是这样的:
我fork了一份到gitee,可以将README里面的https://raw.githubusercontent.com/huihut/interview/master/images
全部替换为
https://gitee.com/zhihuanchen/interview/raw/master/images
或者你自己在gitee里面fork一份也行。
TCP黏包这个概念,其实是不存在的。所谓黏包是程序员对TCP字节流的处理出现了错误。不知道作者对于这个怎么看?
建议增加Linux开发常见的系统调用的总结,对于服务器端开发,epoll这样的系统调用非常重要。
建议把STL解析里的重复例子合并一下,增加可阅读性,比如array::begin 和 array::end。另外 array::cend 例子输出有误。应为 15 720 801 1002 3502
你好,我有个疑惑:基数排序的代码实现,用的更像是计数排序而不是桶排序,桶排序同一个桶是桶内有序的,而代码实现里好像没体现这一点
建议将readme里面的图片链接换成国内链接,不然没有梯子的同学打开后可能是这样的:
我fork了一份到gitee,可以将README里面的https://raw.githubusercontent.com/huihut/interview/master/images
全部替换为
https://gitee.com/zhihuanchen/interview/raw/master/images或者你自己在gitee里面fork一份也行。
这个可以有,只是图片有点多,稍过一阵子有空的时候换上。
我看看是放到 gitee 或者 GitHub 上托管图片,还是放在图片外链的平台上托管。
可以把“21种设计模式”先完善完!
问题代码可以添加leetcode链接,方便看题解,只看代码的话有些不懂为什么。 或者觉得麻烦的话可以提示不清楚可以去搜关键字找题解
看到楼上提到设计模式,推荐这个网站,讲得很通俗易懂,分类清晰,附有伪代码和各种语言的实现,https://refactoringguru.cn/design-patterns
关于 typeid 部分,第二个列表项的 type_id
是否应该为 typeid
?🤔
计算机网络那里,TCP应该端到端通信吧,ip协议才是点对点
关于C++ 纯虚函数,纯虚函数是可以在类外进行具体实现的定义,详见:https://stackoverflow.com/questions/2089083/pure-virtual-function-with-implementation