01 C++ 那些事
这是一个适合初学者从入门到进阶的仓库,解决了面试者与学习者想要深入 C++及如何入坑 C++的问题。
除此之外,本仓库拓展了更加深入的源码分析,多线程并发等的知识,是一个比较全面的 C++ 学习从入门到进阶提升的仓库。
项目地址:https://github.com/Light-City/CPlusPlusThings
02 C++实现的各种算法的开源实现的集合
这个存储库是C++实现的各种算法的开源实现的集合,算法涵盖了计算机科学、数学和统计学、数据科学、机器学习、工程等领域的各种主题。
这些实现和相关文档旨在为教育者和学生提供学习资源。因此,对于同一个目标,可以找到多个实现,但使用不同的算法策略和优化。
开源地址:https://github.com/TheAlgorithms/C-Plus-Plus
03 C/C++ 技术面试基础知识总结
C/C++ 技术面试基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。
项目地址:https://github.com/huihut/interview
04 80x23终端俄罗斯方块!
这是 80x23 版本的俄罗斯方块游戏,你可以用a(左)、d(右)、w(旋转)来控制它,s(放弃)和q(退出)。
项目地址:https://github.com/taylorconor/tinytetris
05 C++ 实现的截图软件 Demo
仿 QQ 截图,C++ 实现的截图软件 Demo。
项目地址:https://github.com/wanttobeno/Screenshot
06 基于 C++ 实现的 HTTP 服务器
一款可运行的基于 C++ 实现的 HTTP 服务器,基于《TCPIP网络编程》和《Linux高性能服务器编程》实现的服务器项目。
项目地址:https://github.com/forthespada/MyPoorWebServer
07 用于 C++ 的图形用户界面库
Dear ImGui 是一个用于 C++ 的无膨胀图形用户界面库,它输出优化的顶点缓冲区,你可以在启用的 3D 应用程序中随时渲染这些缓冲区,特别适合集成到游戏引擎(用于工具)、实时 3D 应用程序、全屏应用程序、嵌入式应用程序或操作系统功能非标准控制台上的任何应用程序中。
项目地址:https://github.com/ocornut/imgui
Dear ImGui 的核心是独立的,不需要特定的构建过程,你可以将 .cpp 文件添加到现有项目中。
ImGui::Text("Hello, world %d", 123);
if (ImGui::Button("Save"))
MySaveFunction();
ImGui::InputText("string", buf, IM_ARRAYSIZE(buf));
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
Result:深色风格(左),浅色风格(右)/字体:Roboto-Medium,16px
调用 ImGui::ShowDemoWindow() 函数将创建一个展示各种功能和示例的演示窗口
开源的计算器C++
Windows 计算器应用程序是用 C++ 和 C# 编写的现代 Windows 应用程序,预装在 Windows 中。该应用程序提供标准、科学和程序员计算器功能,以及一组不同计量单位和货币之间的转换器。
开源地址:https://github.com/microsoft/calculator
使用 C++ 解决 180 多个算法和数据结构问题
数据结构与算法问题
github地址
https://github.com/mandliya/algorithms_and_data_structures
互联网大厂的薪资确实相对较高,特别是对于技术岗位,如程序员和算法工程师等。在这些公司,工作五年达到年薪百万的情况并不罕见。算法能力通常是评估技术候选人是否适合进入这些大厂的一个重要标准。以下是数据结构与算法面试中可能会涉及的几个方面:
1. 基本数据结构:包括数组、链表、栈、队列、散列表、树(如二叉树、平衡树、堆)、图等。面试官可能会要求解释这些数据结构的工作原理、优缺点以及在不同场景下的应用。
2. 高级数据结构:如B树、B+树、红黑树、跳表等。这些结构在处理大量数据时有更好的性能,面试时可能会考察你对这些结构的理解及其在不同场景下的适用性。
3. 算法设计与分析:包括排序算法(冒泡、选择、插入、快排、归并、堆排等)、搜索算法(线性搜索、二分搜索)、字符串处理算法(匹配、查找、反转等)、动态规划、贪心算法、回溯算法、分治算法等。面试官可能会让你解释这些算法的原理、复杂度分析以及如何应用这些算法解决问题。
4. 系统设计与优化:在某些情况下,面试官可能会提出一些系统设计问题,要求你使用合适的数据结构和算法来设计高效、可扩展的系统,并针对系统的性能瓶颈进行优化。
5. 编程实践:在面试中,你可能会被要求现场编写代码,实现特定的数据结构或算法。这不仅能考察你的理论知识,还能展示你的编程实践能力。
6. 问题解决能力:面试官可能会给你一些实际场景或问题,让你使用合适的数据结构和算法来解决问题。这类问题通常需要你具备良好的逻辑思维和问题解决能力。
为了准备这些方面的面试,建议你不仅要熟悉数据结构和算法的理论知识,还要通过大量的练习来提高你的编程和问题解决能力。
手撸STL
STL是C++的重要组件,C++开发几乎没有不使用STL的,然而光会用是不够的,还需要明白它的实现原理。
智能指针 vector array stack queue deque map set string 这些常用的数据结构最好自己都实现一遍。
水平高的可以直接参考gcc源码(https://github.com/gcc-mirror/gcc)
刚入门的朋友可以参考这个大佬写的简易STL(https://github.com/Alinshans/MyTinySTL)
手撸Json
Json是特别常用的序列化数据结构(https://tech.meituan.com/2015/02/26/serialization-vs-deserialization.html)
之前面试时候还被问过如何实现一个Json(我答的不是很好)。大家可以通过手撸一个Json来提高自己的C++水平哈。
水平高的可以直接参考这个C++中常用的Json三方库https://github.com/nlohmann/json
刚入门的朋友可以参考这个大佬写的简易Json(https://github.com/dropbox/json11)
网络编程
后端的事我不大懂,只看过少数书籍,实现过简单的聊天小程序,个人认为陈硕的muduo库(https://github.com/chenshuo/muduo)和《Linux多线程服务器编程》很不错,推荐给大家。
直接看这个网站
https://en.cppreference.com/w/cpp/links/libs
这个网站列举了很多C++的开源库,大家对哪个感兴趣就学哪个也行的。
原文链接: