pbk8495 发表于 2023-10-3 19:20:24

C++ 找工作校招需要掌握到什么程度?

本人末流211大学毕业,四年学的挺捞的,虽然学了Cpp但是课设什么的都是水过去的,也没有项目,想问问现在找工作Cpp需要学到什么程度,技术栈都有哪些需要掌握的,还有有没有什么好的项目推荐呀?

halczy 发表于 2023-10-3 19:20:31

谢谢邀请~
我跟题主一样也是选择C++作为自己的主攻语言,校招时拿了不少互联网方面的秋招offer,
比如字节跳动、百度、华为等,后来去了字节跳动抖音部门做后端研发工程师。

http://picx.zhimg.com/v2-5d48ecd5ac5ec31ac4bb665402816973_r.jpg?source=1940ef5c

以前书桌上放的书

知乎上各种985遍地跑,我就是很普通的双非出身,但跟自己身边同学不一样。
在大多数人还迷迷糊糊在学校里混日子的时候,我早早就开始对秋招找工作比较上心。
提前差不多一年开始准备自学编程,各种啃书 + 刷题 + 面试,最后顺利找到一份自己在最开始想都不敢想的工作。
这是以前复盘的学习过程
系统复盘一下自己当初认真学习C++的整个经过这是我以前写的校招开始踏入工作的分享以及自己总结的C++学习路线
校招进入字节跳动工作是怎样的?(已写一周、一月、半年、一年感受)Linux C/C++ 方向自学路线,万字长文为小白新手打造 | 已拿字节后端研发offer
http://pic1.zhimg.com/v2-3df18dd383fdfc4b764513242975d7ba_r.jpg?source=1940ef5c
在我看来,很多普通学校的学生难以找到大厂大一大原因就是准备的太晚,知道的太晚。
本来像我们这种学校就不如985、211的学生,准备的还晚
我说个最简单的例子:有些同学甚至直到毕业了也分不清校招和社招的区别。。。
有的甚至还以为大四快毕业了还能参加本年的秋招,殊不知上一年才是你的秋招时间。。。
这跟学校严重脱离实际的教育有很大关系,毕竟老师上课照着PPT念,下课就找不着人了。

http://picx.zhimg.com/v2-34df58968045a5e12e9a6c0105c41a25_r.jpg?source=1940ef5c
校园招聘的秋招和春招有什么区别?回到问题本身“c++找工作校招需要掌握到什么程度?”,我来分享一下自己的看法。
C++

下面就是我以前校招时记录的那些面试官比较喜欢问的一些问题,
如果你是一个C++面试官,你会问哪些问题?如果你跟我一样,选择C++作为自己的主攻语言,毕业后想要从事找一份C/C++开发的工作,
学习完 C++ Primer 能做什么项目练手或者看什么好的开源项目源码?那么在校招找工作前,你至少应该掌握以下C++方面的知识点:

[*]STL:容器、迭代器、容器适配器、仿函数、算法等知识点,
[*]C++11特性有哪些,说用过的
[*]怎么理解重载与重写
[*]怎么理解C++中的static关键字
[*]vector和list 的区别
[*]C++虚函数原理
[*]比如容器的几大部件:vector、deque、stack/queue、map/set、unordered_map
[*]/unordered_set各自的适用场景
[*]迭代器:随机访问迭代器、双向迭代器、前项迭代器
[*]C++11的新特性:RAII思想、四大智能指针(unique_ptr、weak_ptr、auto_ptr、shared_ptr)
[*]四种强制类型转换:static_cast、reinterpret_cast
[*]、const_cast、dynamic_cast,分别的适用场景
[*]C和C++的区别:C++面向对象,C面向过程;输入输出流不同:C中使用printf与scanf等;C++使用类如cin、cout;C++中使用new/delete代替C中的malloc/free
[*]面向对象三大特性:封装继承多态,其中面向过程则性能高、不易维护
[*]类与对象:struct/class对比;友元类与友元函数;六个默认成员函数
中又包括:构造函数(缺省构造函数、explicit、初始化列表)、拷贝构造函数、析构函数、类和对象的知识点还包括:inline内联函数、类的静态成员、类和对象的实例化
图书推荐
如果想要弄懂C++的底层基本理论,还是需要沉下心来钻研一本书,毕竟所有的衍化而来都是出自于本宗,想要打好基础,这几本书是必不可少的。
好好吃透一本书,绝对能让你对C++豁然开朗,秋招根本就是小意思~

[*]《C++ Primer 第五版》
[*]《Effective C++》
[*]《More Effective C++》
[*]《STL源码剖析》

http://picx.zhimg.com/v2-b79046effefcc3f88da5877c58dfbf56_r.jpg?source=1940ef5c

经典视频&&网站推荐
有些同学可能不太能看得进去那种大厚书,更多小伙伴喜欢看视频来学习,所以这里也推荐一个不错的学习C++的网站:https://en.cppreference.com/w/cpp/links/libs
当然了,也有一些不错的视频推荐给大家,我基本都看过了,对学习C++有很大的帮助!
侯捷C++视频系列(一)侯捷C++视频系列(二)侯捷C++视频系列(三)侯捷C++视频系列(四)
重点推荐侯捷老师的几门视频,比如侯捷C++系列视频 (C++面向对象开发、STL标准库与泛型编程等)
这些视频以前我就保存过来着,后来听说B站将这些视频全都下架了,我又把这些视频全部上传到A站和CSDN上去,没想到后来也被下架了,还好最后找到一种方式分享这些视频,如下:
C++开发必看!免费分享!侯捷老师的C++&陈硕老师Linux网络编程视频!C++开发必看!免费分享!侯捷老师的C++&陈硕老师Linux网络编程视频!这几门视频,是想要学好C/C++的必看视频!
侯捷,YYDS!
源码之下,了无秘密!侯捷老师课讲得还是很不错的,所以才会有那么多人推荐。
用一年时间如何能掌握 C++ ?<hr/>硬实力和软实力

但需要注意的是,找工作除了硬实力很重要,软实力也相当重要。
硬实力很好了理解,因为面试的时候并不只是考察C++方面的知识,还会考察你一些其余的计算机基础,比如操作系统、计算机网络、数据库、数据结构与算法方面的内容。
软实力就不好说,比如一个比较容易被忽略的点就是信息战,很多人甚至不知道应该去哪里找可以投递的公司?不知道有哪里可以练习自己学习技能的地方?
我最近发现有个程序媛小姐姐总结了不少公司的信息,每天都会更新,有互联网公司、国企、外企、银行等公司的招聘时间和信息,分享一下她的整理~
有需要的话可以多去看看,比如下面这些。

http://pic1.zhimg.com/v2-3eea94964390a4a2df7d558857e6bb77_r.jpg?source=1940ef5c

互联网公司、国企、外企、银行等的招聘信息

http://pic1.zhimg.com/v2-1e86583c70321bdf93108efb19335cca_r.jpg?source=1940ef5c

互联网公司、国企、外企、银行

应届生关注:应届生实习&校招实习公司大全
往届生关注:计算机专业往届生校招公司大全
又比如一些知识练习平台:
经常在私信里看到有小伙伴问我学习完C/C++或Java、数据机构与算法等后可以去哪里练手和做项目?
其实网上有很多类似的开源题库可以供你联系,今天就 良心推荐一个计算机学习网站,可能是我用过最好的计算机学习网站,可以刷算法、C/C++、Java、硬件、前端等,还有大厂面经、面试真题等。
力扣这种比较知名的网站,我就不说了,今天来安利另一个网站:牛客网,可能计算机专业的学生最应该上的一个网站。
它是我校招找工作阶段最大的助力网站,可以说,没有牛客网就没有我后面那么多的面试邀约以及offer。

http://pic1.zhimg.com/v2-affc4c5cfe9100731e8bd35a57524de1_r.jpg?source=1940ef5c

面试邀约

http://picx.zhimg.com/v2-41555da62dda0e5eec0e0f71782cd696_r.jpg?source=1940ef5c

最后的字节offer

牛客网作为国内内容超级丰富的 IT 题库,题库+面试+学习+求职+讨论+考研题库+招聘内推,堪称"互联网求职神器"。
互联网一二线大中厂校招面经PDF版本合集(阿里、百度、字节等)可能是我用过最好的计算机学习网站,可以刷算法、C/C++、Java、硬件、前端等,还有大厂面经、面试真题等。

http://pic1.zhimg.com/v2-ef65ecfba849860b035e065cff14f264_r.jpg?source=1940ef5c
下面是一些我用过的其中一些比较好的在线题库:

[*]互联网面试面经合集
[*]C++/Java练习题库
[*]算法-面试必刷101
[*]计算机基础必备基础知识练习
现在是免费注册的,据我所知后面注册可能要收费了,如果你有类似的需要我建议你现在注册一个,正所谓:不白嫖就是亏!!!嘎嘎嘎!
除此之外,也有各个公司的面试题和面经分享,找工作前认真刷一刷,一定会有很大收获!拿到心仪的 offer!这个不多说,直接看图,各种类型应有尽有。

http://pic1.zhimg.com/v2-5814a7af82ede289de0ab9fa816b73b1_r.jpg?source=1940ef5c

http://picx.zhimg.com/v2-388d4eae75dbe34efb94f3abe1aafe5e_r.jpg?source=1940ef5c
下面是一些我用过的其中一些比较好的在线题库&面经汇总,分享一波:

[*]互联网面试面经合集
[*]C++/Java练习题库
[*]算法-面试必刷101
[*]计算机基础必备基础知识练习
不过现在是免费注册的,不知道后面注册会不会收费,如果你有类似的需要我建议你现在注册一个,一定用得上!不白嫖就是亏!!!
<hr/>算法

算法这块我就更不用说了,有需要直接看下面这两个回答吧,基本都是收获了1200以上的点赞&&3000+的收藏。
如何在最短的时间内搞定数据结构和算法,应付面试?LeetCode按照怎样的顺序来刷题比较好?相遇即是有缘,我最近发现三位谷歌大神写算法刷题资料,支持Java、C++、Go三种语言,其中对于面试中考察较多的链表、树、动态规划、数组等知识点讲解的都很全!
如果你算法能力比较弱,比如互联网大厂面试中手撕算法比较差的话,那要好好看看了。
BAT大厂必备!支持Java、C++、Go三种语言版本!谷歌大佬亲自总结的Leetcode刷题笔记~aaa
能白嫖,速来!三份Github高星LeetCode刷题PDF笔记!!支持Java、C++、Go三种语言!操作系统

操作系统面试中的高频考察点

[*]多进程,多线程,进程池,select、poll、epoll 的原理、比较、以及使用场景
[*]epoll 的水平触发与边缘触发。
[*]进程/线程/协程 + 内存管理 + 页式/段式 + 中断机制
[*]进程与线程的本质区别、以及各自的使用场景。
[*]常见进程同步问题。
[*]进程通信方法的特点以及使用场景。
[*]比较分页与分段的区别。
[*]分析静态链接的不足,以及动态链接的特点。
[*]进程六大通信方式:管道、命名管道、消息队列、信号量、共享内存、套接字
图书推荐

[*]《30天自制操作系统 (图灵程序设计丛书)》
[*]《计算机系统要素 - 从零开始构建现代计算机》
[*]《鸟哥的 Linux 私房菜》
[*]《The Linux Command Line》
[*]《深入理解计算机系统》
[*]《UNIX 环境高级编程》
[*]《Unix/Linux 编程实践教程》
视频实战演练

[*]南京大学 计算机系统基础(一)主讲:袁春风老师
https://www.bilibili.com/video/BV1kE411X7S5?from=search&seid=4867937238568980826https://www.bilibili.com/video/BV1GE411T7Qs?from=search&seid=4867937238568980826

[*]【麻省理工学院】MIT 6.S081 操作系统工程 operating system engineering(中文字幕):
https://www.bilibili.com/video/BV1Dy4y1m7ZE

[*]【精校中英字幕】卡内基梅隆大学CMU 15-213 CSAPP 深入理解计算机系统
https://www.bilibili.com/video/BV1iW411d7hd前段时间我上班的时候突发奇想,想看看知乎上计算机领域内评分最高的Top 20 经典书籍有哪些?

http://pic1.zhimg.com/v2-fbdabf0bb1e95dbe08a1c7aac125d988_r.jpg?source=1940ef5c
分别抓,哦不,手动收集了知乎计算机经典图书推荐问题下的高赞回答后得出的好书集锦,选择标准就是每本书都在推荐版上出现过 5 次及其以上!!
最终将抓到进行数据清洗和合并,得到一份计算机领域类的书籍榜单!
说实话让我觉得有些意外,因为Python类和机器学习类书籍确实不少,不过Top 3却是一等一的经典!
就是下面这三本,现在免费分享一下自己以前抓到的豆瓣上计算机领域内评分最高的Top 20 经典书籍

[*]深入理解计算机系统(原书第3版)
[*]计算机程序的构造和解释(原书第2版)
[*]程序员的自我修养: 链接、装载与库
免费下载!告诉你知乎计算机领域内最经典的Top 20 书籍有哪些~计算机网络


[*]以太网的特点,以及帧结构。
[*]集线器、交换机、路由器的作用,以及所属的网络层。
[*]IP 数据数据报常见字段的作用。
[*]ARP 协议的作用,以及维护 ARP 缓存的过程。
[*]ICMP 报文种类以及作用;和 IP 数据报的关系;Ping 和 Traceroute 的具体原理。
[*]UDP 与 TCP 比较,分析上层协议应该使用 UDP 还是 TCP。
[*]理解三次握手以及四次挥手具体过程,三次握手的原因、四次挥手原因、TIME_WAIT 的作用。
[*]可靠传输原理,并设计可靠 UDP 协议。
[*]TCP 拥塞控制的作用,理解具体原理。
[*]DNS的端口号;TCP 还是 UDP;作为缓存、负载均衡。GET 与 POST 比较:作用、参数、安全性、幂等性、可缓存。HTTP状态码。Cookie 作用、安全性问题、和 Session 的比较。缓存 的Cache-Control 字段,特别是 Expires 和max-age 的区别。ETag 验证原理。
[*]计算机网络分层体系有哪些?分别怎么分的?
[*]协议,到底是什么?
[*]“你在浏览器输入一个url,按下回车键,浏览器跳转到url的页面”,从网络角度来讲,这个过程一般是怎样的?
[*]TCP 协议是什么?TCP 三次握手和四次挥手过程分别是什么?TCP 能解决什么问题?
推荐图书

[*]《图解TIP、IP》
[*]《网络是怎样链接起来的》
[*]《图解 HTTP》
[*]《TCP/IP 详解 卷 1:协议》
[*]《TCPIP详解三部曲卷2:实现》
[*]《HTTP权威指南》
[*]《计算机网络》
视频实战

[*]【斯坦福大学】CS144 计算机网络介绍
https://www.bilibili.com/video/BV137411Z7LR

[*]韩立刚计算机网络
https://www.bilibili.com/video/BV1gV411h7r7?from=search&seid=10898909771756354118

[*]TCP/IP 视频讲解 计算机网络
https://www.bilibili.com/video/BV1Mx411v7rJ?from=search&seid=10898909771756354118数据库


[*]InnoDB 与 MyISAM 比较、水平切分与垂直切分。
[*]主键、超键、外键的基本概念
[*]乐观锁与悲观锁、MVCC 原理,当前读以及快照读,Next-Key Locks 解决幻影读。
[*]范式理论、SQL 与 NoSQL 的比较、MySQL B+ Tree 原理,与其它查找树的比较。
[*]MySQL 索引以及优化、查询优化
[*]系统原理 ACID 的作用以及实现原理。其中四大事务:A:原子性、C:一致性、I:隔离性、D:持久性
[*]手写 SQL 语句,最基本的增删改查也就是insert、select、delete、update,特别是连接查询与分组查询、连接查询与子查询的比较。
[*]几种关键字drop、delete、truncate 比较。
[*]视图的作用,以及何时能更新视图、理解存储过程、触发器等作用。
[*]Redis 字典和跳跃表原理分析
[*]使用场景与 Memchached 的比较
[*]数据淘汰机制
[*]RDB 和 AOF 持久化机制
[*]事件驱动模型
[*]主从复制原理
[*]集群与分布式
推荐图书

[*]《MySQL 必知必会》:很薄的一本小册子,很快就看完了
[*]《高性能 MySQL》
[*]《MySQL 技术内幕:InnoDB存储引擎(第2版)》
[*]《Redis 设计与实现》
[*]《Redis 实战》
[*]《大规模分布式存储系统》
经典学习视频
尚硅谷MySQL数据库全套完整版(SQL数据库优化)
https://www.bilibili.com/video/BV1xW411u7ax尚硅谷MySQL数据库高级,MySQL优化,数据库优化
https://www.bilibili.com/video/BV1KW411u7vy<hr/>码字不易,觉得这篇回答有帮助的话,不要只收藏不点赞呀!
耽误这位准大厂人0.1s的时间,希望认真看完的你可以点个赞再走。
我是@阿秀,编程程序员话题下获20W点赞+收藏+喜欢,分享计算机学习、编程知识~

http://picx.zhimg.com/v2-35cbd6165f48790e9083ba2e016b7f3b_r.jpg?source=1940ef5c

youxibiao 发表于 2023-10-3 19:21:08

提供一份面试题:

[*]C++与 C 有什么区别?
[*]解释 C++ 的多态性(polymorphism)和继承性(inheritance)。
[*]解释虚函数(virtual function)和纯虚函数(pure virtual function)。
[*]什么是动态绑定(dynamic binding)?它的使用场景是什么?
[*]解释 C++ 中的 const 关键字以及它的作用。
[*]什么是 RAII 技术?
[*]C++ 中有哪些内存管理方式?
[*]解释智能指针(smart pointer)及其作用。
[*]什么是拷贝构造函数(copy constructor)和赋值操作符(assignment operator)?
[*]解释引用(reference)和指针(pointer)之间的区别。
[*]C++ 中的 STL 是什么?它包含哪些常用的容器类和算法?
[*]解释迭代器(iterator)及其作用。
[*]什么是函数对象(function object)?
[*]解释 lambda 表达式及其用法。
[*]什么是异常(exception)?如何处理异常?异常的优缺点?
[*]解释编译时(compile-time)和运行时(run-time)多态(polymorphism),它们有什么区别?
[*]解释 RTTI(Run Time Type Identification)。
[*]什么是线程(thread)?C++ 中如何创建和管理线程?
[*]解释互斥锁(mutex)和条件变量(condition variable)。
[*]什么是死锁(deadlock)?如何避免死锁?
[*]什么是信号(signal)?在 C++ 中如何处理信号?
[*]什么是多进程(multiprocessing)?与多线程相比有哪些区别?
[*]解释内存泄漏(memory leak)及其危害?如何处理内存泄漏问题?
[*]什么是单例模式(singleton pattern)?解释它的优点和缺点。
[*]解释工厂模式(factory pattern)和抽象工厂模式(abstract factory pattern)。
[*]解释装饰器模式(decorator pattern)。它与继承(inheritance)有什么区别?
[*]什么是观察者模式(observer pattern)?
[*]解释迭代器模式(iterator pattern)和适配器模式(adapter pattern)。
[*]什么是 MVC 模式?它在 C++ 中如何应用?
[*]什么是模板(template)?它的优缺点?
[*]什么是元编程(metaprogramming)?
[*]什么是模板特化(template specialization)?
[*]C++ 中的模板参数包(template parameter pack)是什么?它有什么作用?
[*]什么是右值引用(rvalue reference)?与左值引用(lvalue reference)有什么区别?
[*]C++11 中的移动语义(move semantics)是什么?它有什么作用?
[*]解释完美转发(perfect forwarding)。
[*]什么是 noexcept 关键字?它有什么作用?
[*]解释函数模板和类模板之间的区别。
[*]什么是 SFINAE(Substitution Failure Is Not An Error)?
[*]解释区间(range)和范围(span)。
[*]什么是异步编程(asynchronous programming)?C++ 中如何实现异步编程?
[*]解释 C++ 中的多线程同步机制,例如互斥量、信号量、读写锁等。
[*]解释多线程中的线程安全(thread safety)和竞态条件(race condition)。
[*]C++ 中有哪些常见的并发编程模型,例如共享内存、消息传递等?
[*]解释 C++11 中的原子操作(atomic operation)和 std::atomic 类型。
[*]什么是强制内联(forced inline)?它与普通内联(normal inline)有什么区别?
[*]解释 C++ 中的静态多态(static polymorphism)和动态多态(dynamic polymorphism)。
[*]什么是 CRTP(Curiously Recurring Template Pattern)?它有什么作用?
[*]掌握 C++ 中的排序算法,例如快速排序、归并排序等。
[*]掌握 C++ 中的查找算法,例如二分查找、哈希表等。
[*]解释 C++ 中的时间复杂度和空间复杂度。
[*]什么是 O(n)、O(nlogn)、O(n^2) 等时间复杂度表示法?它们分别代表什么含义?
[*]什么是数据结构(data structure)?C++ 中常见的数据结构有哪些?
[*]什么是红黑树(red-black tree)?它有什么作用?字节经常让你手写红黑树....
[*]什么是 AVL 树?它有什么作用?
[*]什么是 B 树?它有什么作用?
[*]什么是哈希表(hash table)?它有什么作用?
[*]什么是堆(heap)?它有什么作用?
[*]什么是堆排序(heap sort)?它有什么特点?
[*]什么是拓扑排序(topological sorting)?它有什么作用?
[*]什么是并查集(union-find set)?它有什么作用?
[*]什么是 Trie 树?它有什么作用?
[*]什么是最短路径算法(shortest path algorithm)?例如 Dijkstra 算法、Bellman-Ford 算法等。
[*]什么是最小生成树算法(minimum spanning tree algorithm)?例如 Prim 算法、Kruskal 算法等。
[*]解释 C++ 中的类型推导(type inference),例如 auto 关键字和 decltype 关键字。
[*]什么是模板元编程(TMP)?它有什么应用场景?
[*]C++ 中的异常处理机制有哪些,例如 try-catch 块、throw 关键字等。
[*]什么是 RAII 技术?它在 C++ 中有什么作用?
[*]C++ 中的 static 关键字有哪些用途?
[*]什么是虚函数表(virtual function table)?它在 C++ 中有什么作用?
[*]解释 C++ 中的对象模型(object model)。
[*]什么是 vtable 和 vptr?它们在 C++中有什么作用?
[*]什么是编译器优化(compiler optimization)?C++ 中有哪些常见的编译器优化技术?
[*]解释 C++ 中的强制类型转换(type casting),例如 static_cast、dynamic_cast、reinterpret_cast 等。
[*]什么是函数对象(function object)?它们在 C++ 中有什么作用?
[*]解释 lambda 表达式及其用法。
[*]什么是协程(coroutine)?它们在 C++ 中有什么应用场景?
[*]什么是异步 IO(asynchronous IO)?它在 C++ 中如何实现?解释下IO多路复用?
[*]解释 C++ 中的模板元编程(TMP)和泛型编程(generic programming)之间的区别。
[*]C++20有哪些新特性和改进?
[*]C++17有哪些新特性和改进?
[*]C++14有哪些新特性和改进?
[*]C++11有哪些新特性和改进?
[*]解释 C++ 中的调试技术,例如断言(assert)和调试器(debugger)。
[*]使用过代码覆盖率(code coverage)吗?
[*]使用过C++ 中的测试框架吗,例如 Google Test 和 Boost.Test。
[*]在 C++ 中应该遵循哪些代码规范?
[*]解释 C++ 中的内存布局(memory layout),例如栈、堆、全局变量等。
[*]什么是 C++ 中的动态链接库(dynamic link library,DLL)?它有什么作用?
[*]在 C++ 中实现一个简单的线程池,并解释其原理。
之前我还整理了一份面经 假如你是面试官,你都会问c++和linux系统知识那些问题呢?希望各位大神能够集思广益 ? 也可以看看这个。

jsznet 发表于 2023-10-3 19:21:46

作为24届毕业生,今年(23年)的暑期实习拿到了百度和美团的后端开发offer,我可以提供一下前两天面百度暑期实习C++岗时候的面经供你参考~
能回忆起来大概小一百道的八股,C++基础知识➕项目问题其实基本都大同小异。
一面48min

[*]自我介绍
[*]研究生的研究方向
[*]做过什么后端开发相关的项目
[*]webserver是你独立写的还是参考别人
[*]三个项目都是什么类型?
[*]C++的内存结构
[*]堆区和栈区的区别
[*]什么情况下使用堆区什么情况使用栈区
[*]数组和链表的区别
[*]进程和线程的区别
[*]i = i + 1大概执行多久
[*]进程间的通信方式有哪些
[*]了解中断吗
[*]键盘上敲一个字母是什么中断
[*]Linux系统熟悉吗
[*]查找一个字符串是否在文件中
[*]查找本机一个端口号的状态
[*]几十个G的文件中查找一个字符串是否存在
[*]如何判断远程服务的端口有没有开启
[*]平时在Linux上都用什么命令
[*]介绍一下OSI七层协议,各层协议都有哪些
[*]百度搜索http://www.baidu.com到页面出现百度,这中间发生了什么
[*]http://baidu.com默认用什么端口
[*]三次握手
[*]两次握手可以吗
[*]如果网络情况非常好百分百不会发生拥塞,不会重传SYN,不会有历史连接的问题,可以两次握手吗?
[*]什么时候用tcp什么时候用udp
[*]此时此刻的视频面试用的udp还是tcp
[*]udp丢包会有什么现象?
[*]http和https的区别
[*]证书是绿色的是什么意思?
[*]自己随便编一个证书可以吗?需要去什么地方注册
[*]平常查什么网站?代码、文献、debug习惯
[*]手撕代码Leetcode模式easy题
二面1h

[*]proactor和reactor模式
[*]从数据流的角度描述一下proactor模式
[*]五种IO模型
[*]epoll是同步还是异步的?这个争议很大
[*]为什么不用异步
[*]如何用同步IO模拟proactor模式
[*]一些场景题,都有很好的引导。高并发情况下的性能提升方法
[*]Linux如何切换目录、查看端口绑定情况、查看cpu利用率命令
[*]什么是qps和tps,如何计算
[*]线程池数量如何确定
[*]线程池和任务队列有没有做分离
[*]线程池中怎么利用的信号量机制
[*]CPU利用率拉满的时候在线程池中增加线程是否能提高qps
[*]引导我如何根据CPU利用率动态设计,优化这个线程池
[*]http解析主从状态机
[*]http的5类状态码
[*]是否使用过lib库,动态链接库静态链接库特点、区别
[*]进程线程区别、通信方式
[*]协程
[*]接下来C++八股
[*]static加在全局变量上
[*]加在局部变量上
[*]加在类成员函数上
[*]如何使用类中的static成员函数
[*]static数据成员如何修改
[*]const加在不同位置的效果,和static问法差不多
[*]全局变量的默认关键字
[*]面向对象三大特性
[*]虚函数表在什么时候创建的、存在什么位置
[*]虚函数存在什么位置
[*]虚函数指针在什么时候创建
[*]虚函数为什么能实现多态
[*]函数调用的过程中堆栈的变化情况
[*]什么是内存泄漏、如何防止
[*]既然提到智能指针,说几个常见的,哪个比较熟
[*]你提到RAII,什么是RAII、智能指针为什么能防止内存泄漏
[*]shared_ptr的内部结构
[*]如果一个传给shared_ptr一个引用,那么引用计数会不会+1
[*]宏定义,有无类型检查,在什么阶段生效
[*]设计模型
[*]远不止这些、自从挖完项目之后、我俩快问快答问了非常多的八股
[*]手撕代码acm模式一道二叉树medium题。
三面46min

[*]实习的工作意向
[*]有没有实习经历
[*]和导师做过什么项目
[*]C++接触多长时间了
[*]做导师的项目是自己选择还是他分配的
[*]项目来源
[*]这两个项目哪个印象比较深刻,如果想聊我们聊哪个
[*]项目是自己完成还是团体参与,独立完成的时候有没有和其他同学讨论交流过
[*]在选择任务的技术路线时如何佐证你的方案是可行的
[*]组会讨论是什么形式,你期望的是什么样的反馈
[*]如果你的想法和大家的反馈有冲突怎么办
[*]当你的任务有做偏了的情况在哪一步去进行挽回
[*]别人给你的反馈不一定是正确的,你觉得自己的思路更好,这种情况怎么处理
[*]对于更具有权威性的人提出的建议你是怎么考虑的
[*]合作的项目彼此之间进度不一的情况怎么处理
[*]研究生规划
[*]你觉得自己是偏技术钻研方向还是偏向业务(社交、组织协调)
[*]工作城市的选择
[*]实习时间
[*]优势和不足的点
[*]项目大概做了多长时间
[*]对这个项目的时间周期满意吗
[*]反问环节

东德 发表于 2023-10-3 19:22:10

这是一套基本的C++面试题,然而,你学完了C++Primer后,我估计这里面的大多数问题你都回答不了,我认为单纯学完一个C++Primer后还不够,想找到工作可以再多看看面经,针对性准备准备。
C++基础

[*]C语言和C++有什么区别?
[*]struct和class有什么区别?
[*]extern "C"的作用?
[*]函数重载和覆盖有什么区别?
[*]谈一谈你对多态的理解,运行时多态的实现原理是什么?
[*]对虚函数机制的理解,单继承、多继承、虚继承条件下虚函数表的结构
[*]如果虚函数是有效的,那为什么不把所有函数设为虚函数?
[*]构造函数可以是虚函数吗?析构函数可以是虚函数吗?
[*]什么场景需要用到纯虚函数?纯虚函数的作用是什么?
[*]了解RAII吗?介绍一下?
[*]类的大小怎么计算?
[*]volatile关键字的作用
[*]如何实现一个线程池?
[*]了解各种强制类型转换的原理及使用?
[*]指针和引用有什么区别?什么情况下用指针,什么情况下用引用?
[*]new和malloc有什么区别?
[*]malloc的内存可以用delete释放吗?
[*]malloc出来20字节内存,为什么free不需要传入20呢,不会产生内存泄漏吗?
[*]new[]和delete[]一定要配对使用吗?
C++11新特性你都了解多少?

[*]了解auto和decltype吗?
[*]谈一谈你对左值和右值的了解,了解左值引用和右值引用吗?
[*]了解移动语义和完美转发吗?
[*]了解列表初始化吗?
[*]平时会用到function、bind、lambda吗,都什么场景下会用到?
[*]对C++11的mutex和RAII lock有过了解吗?
[*]对C++11的智能指针了解多少,可以自己实现一个智能指针吗?
[*]enum 和 enum class有什么区别?
一般什么情况下会出现内存泄漏?怎么用C++在编码层面尽量避免内存泄漏。

[*]unique_ptr如何转换所有权?
[*]谈一谈你对面向对象的理解
[*]什么场景下使用继承方式,什么场景下使用组合?
STL系列

[*]C++直接使用数组好还是使用std::array好?std::array是怎么实现的?
[*]std::vector最大的特点是什么?它的内部是怎么实现的?resize和reserve的区别是什么?clear是怎么实现的?
[*]deque的底层数据结构是什么?它的内部是怎么实现的?
[*]map和unordered_map有什么区别?分别在什么场景下使用?
[*]list的使用场景?std::find可以传入list对应的迭代器吗?
[*]string的常用函数
C语言

[*]const的作用有哪些,谈一谈你对const的理解?
[*]描述char*、const char*、char* const、const char* const的区别?
[*]指针常量和常量指针有什么区别?
[*]static的作用是什么,什么情况下用到static?
[*]全局变量与局部变量的区别?
[*]宏定义的作用是什么?
[*]内存对齐的概念?为什么会有内存对齐?
[*]inline 内联函数的特点有哪些?它的优缺点是什么?
[*]如何用C 实现 C++ 的面向对象特性(封装、继承、多态)
[*]memcpy怎么实现让它效率更高?
[*]typedef和define有什么区别?
[*]extern有什么作用,extern C有什么作用?
[*]如何避免野指针?
[*]如何计算结构体长度?
[*]sizeof和strlen有什么区别?
[*]知道条件变量吗?条件变量为什么要和锁配合使用?
设计模式

[*]分别写出饿汉和懒汉线程安全的单例模式
[*]说出观察者模式类关系和优点
[*]说出代理模式类关系和优点
[*]说出工厂模式概念和优点
[*]说出构造者模式概念
[*]说出适配器模式概念
操作系统

[*]进程和线程的区别?
[*]操作系统是怎么进行进程管理的?
[*]操作系统是如何做到进程阻塞的?
[*]进程之间的通信方式有哪些?
[*]什么是上下文切换,操作系统是怎么做的上下文切换?
[*]线程是如何实现的?
[*]线程之间私有和共享的资源有哪些?
[*]一般应用程序内存空间的堆和栈的区别是什么?
[*]进程虚拟空间是怎么布局的?
[*]虚拟内存是如何映射到物理内存的?了解分页内存管理吗?
[*]产生死锁的必要条件有哪些?如何避免死锁?
[*]什么是大端字节,什么是小端字节?如何转换字节序?
[*]信号和信号量的区别是什么?
[*]锁的性能开销,锁的实现原理?
编译原理

[*]gcc hello.c 这行命令具体的执行过程,内部究竟做了什么?
[*]程序一定会从main函数开始运行吗?
[*]如何确定某个函数有被编译输出?
[*]动态链接库和静态链接库的区别是什么?
大家可以自己先试着回答下这些问题,有不会的可以看下面的资料,问题在其中都可以找到答案:
大厂15万字C++开发面试手册出炉(C++和计算机基础全有)​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487041&idx=1&sn=1c49fe6e12b1e52f66462b8b942e1644&chksm=fdb3f09fcac47989e399f52a975a6d2b18bd15e8cdfe720e3d878866f2d05c758318e2f6241f#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487041&idx=1&sn=1c49fe6e12b1e52f66462b8b942e1644&chksm=fdb3f09fcac47989e399f52a975a6d2b18bd15e8cdfe720e3d878866f2d05c758318e2f6241f#rd作者:程序喵大人 链接:https://www.zhihu.com/question/387856198/answer/1849827504学 C++ 是种怎样的体验?
学习C++的大抵都听过这句话:
一年精通,三年熟悉,五年了解,十年用过说说我的体验吧
本科开始就开始学C++,当然只是皮毛,研究生开始看大量C++书籍,什么c++primer effective系列 modern系列,深度探索C++对象模型等,C++书籍看了不下50本,自以为对C++算很了解了。

于是,开始找工作,第一次参加了某歌在学校的笔试+面试,看了我的简历,精通C++?然后问了我一些C++相关知识,发现自己连听都没听过,随便说一个,std::string能否被继承,为什么?
这个问题看起来很简单,但是里面涉及大量的知识,比如对STL中string的实现是否了解,以及是否了解内存泄漏等等。
然后去了第一家公司做网络开发,涉及大量的TCP底层知识以及重构Linux下API
第二家公司开始做推荐系统
第三家公司负责广告引擎
也就是在这家公司,负责的项目,动不动就OOM,造成了千万损失,能体会到当时什么感觉吗?使用简单的排除法之后,发现问题跟glibc有关,所以在临时解决问题之后,用了一个月的时间,分析glibc内存管理源码.
说实话,C++我现在已经学不动了,新知识越来越多了,hold不住了,哈哈哈
最近网上看到很多人都自诩精通C++,斗胆一说,真不敢说精通,怀着一腔热血研究C++,掉进去搞了七年。C++ Primer,C++ 程序设计语言,翻来覆去看了n遍,其他的诸如Thinking in C++,Effective C++,C++ 程序设计与演进…市面上能买的到的基本都通读过。最大的一点感受,C++太博大精深了,有多少精力都能耗进去。实际项目开发中20%都用不到,模板乃至模版元编程,即使你敢写,也要掂量下你的同事能不能跟上节奏。
一度怀疑花了那么多精力学习C++是否值得,直到后面有机会专攻Webkit内核代码,里面有些对性能有变态要求的模块,诸如JavaScript解析引擎,内存池管理,C++的高级玩法都玩到了,C++的优势得得到了充分的展现。在Webkit里面浸淫了两年,在实际层面理解了C++的价值,她在复杂性管理和效率之间的有着完美平衡,但是前提是你能驾驭它。
再往后就不写代码了,回顾下C++的学习过程与我而言是一门修行,作为一个合格的程序员,深入理解一门语言是必须的,一通百通,后面Java,C#,OC基本上都是一周上手,轻轻松松。但是回顾学习本身,还是值得商阙,
1.语言光看是没用的,看了不实践,分分忘光,很多Effective C++提到的问题,只有实际犯错后才会真正记住,多看,多练。
2.语言只是知识体系里面很小的一部分,其他诸如算法,设计模式,计算机体系结构,编译系统的理解,同样重要,缺了就是短板,把读C++设计新思维,More Efftive C++的时间拿去读APUE,敏捷软件开发与实践,收获会更大。
3. 书先读厚,再读薄,看Webkit最大的感受是,里面的C++用得很克制,只是在必须使用时才会用到高阶技术,而这种场合无非是一些基础数据结构,一些对内存和性能有极致要求的地方,否则不光维护难,哪天出问题了,debug多层模版时想死的心都有…。建议看一篇Google写的C++编码规范,如果只是达到这个要求,精读三四本书就够了。
4.既然学深了就多去理解他背后的设计逻辑和哲学体系,为什么引入一些特性,抛弃一些特性,原因是什么。看看STL的一些源码,那是精髓中的精髓,最后试着自己写一套自己的基础数据结构和算法出来,比光看书有效多了。
作者:彭双全 链接:https://www.zhihu.com/question/27331184/answer/49986515你可能会问:C++难在哪?
C++之难不在于其语法的复杂性,也不在于二进制层面上语义的杂乱无章,更不在于玄妙得不食人间烟火的模板推导(模板元编程),这些都只是表象。本质上讲,C++跟任何语言比,它很独特很怪异(废话,任何一种语言那个不特异)。
很多时候,C++给人的感觉就是,好像任何一种语言的特性(这话有点夸张),都可以在C++王国中,通过令人发指的奇技淫巧,罄竹难书的花样作死,最后终于可以在一定程度上模拟出来,但是模拟后的结果,又总是存在这样那样的不足,要么因为内存管理,要么因为反射的原因,总之,就是好像可以做一切事情,但最后终于做得不好。
这个时候,猿猴要么就直接扑上原生带有这种特性的语言,要么干脆就完全舍弃,放弃治疗,啥技巧也不用,返璞归真,就老老实实一行代码一行代码、不厌其烦、不畏枯燥地一再写地重复类似的功能。而C++自身的优秀特性(析构函数、内存管理、模板、多继承等等),没有任何一种语言整的出来,当然,也可以说,这些玩意都是为了解决C++自身制造出来麻烦,other语言s完全不care这些杂碎。难道,这些好东西就没有一丁点价值了。
这里详细谈下C++ 的学习路线,按照这个路线去学习C++,每个阶段都帮你规划好了学习时间,只要你努力且认真的去学了, 保证帮你既高效又扎实的学好C++:

一、C++基础(3个月)

1、面向对象的三大特性:封装、继承、多态
2、类的访问权限:private、protected、public
3、类的构造函数、析构函数、赋值函数、拷贝函数
4、移动构造函数与拷贝构造函数对比
5、深拷贝与浅拷贝的区别
6、空类有哪些函数?空类的大小?
7、内存分区:全局区、堆区、栈区、常量区、代码区
8、C++与C的区别
9、struct与class的区别
10、struct内存对齐
11、new/delete与malloc/free的区别
12、内存泄露的情况
13、sizeof与strlen对比
14、指针与引用的区别
15、野指针产生与避免
16、多态:动态多态、静态多态
17、虚函数实现动态多态的原理、虚函数与纯虚函数的区别
18、继承时,父类的析构函数是否为虚函数?构造函数能不能为虚函数?为什么?
19、静态多态:重写、重载、模板
20、static关键字:修饰局部变量、全局变量、类中成员变量、类中成员函数
21、const关键字:修饰变量、指针、类对象、类中成员函数
22、extern关键字:修饰全局变量
23、volatile关键字:避免编译器指令优化
24、四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast
25、右值引用
26、std::move函数
27、四种智能指针及底层实现:auto_ptr、unique_ptr、shared_ptr、weak_ptr
28、shared_ptr中的循环引用怎么解决?(weak_ptr)
29、vector与list比较
30、vector迭代器失效的情况
31、map与unordered_map对比
32、set与unordered_set对比
33、STL容器空间配置器
参考书籍:《C++ Primer》(第5版)、《STL源码剖析》、《深度探索C++对象模型》
下载地址:

[*]链接:https://pan.baidu.com/s/1qqAR6iqjur1sfmzeZjcrwg
[*]提取码:m6gx
[*]戳下面获取面试真题:
大厂15万字C++开发面试手册出炉(C++和计算机基础全有)二、计算机网络(1个月)

1、OSI7层网络模型:应用层、表示层、会话层、运输层、网络层、链路层、物理层
2、TCP/IP四层网络模型:应用层、运输层、网际层、接口层
综合OSI与TCP/IP模型,学习五层网络模型:
从上向下架构:应用层、运输层、网络层、链路层、物理层
链路层:
3、MTU
4、MAC地址
网络层:
5、地址解析协议
6、为啥有IP地址还需要MAC地址?同理,为啥有了MAC地址还需要IP地址?
7、网络层转发数据报的流程
8、子网划分、子网掩码
9、网络控制报文协议ICMP
10、ICMP应用举例:PING、traceroute
运输层:
11、TCP与UDP的区别及应用场景
12、TCP首部报文格式(SYN、ACK、FIN、RST必须知道)
13、TCP滑动窗口原理
14、TCP超时重传时间选择
15、TCP流程控制
16、TCP拥塞控制(一定要弄清楚与流量控制的区别)
17、TCP三次握手及状态变化。为啥不是两次握手?
18、TCP四次挥手及状态变化。为啥不是三次挥手?
19、TCP连接释放中TIME_WAIT状态的作用
20、SYN泛洪攻击。如何解决?
21、TCP粘包
22、TCP心跳包
23、路由器与交换机的区别
24、UDP如何实现可靠传输
应用层:
25、DNS域名系统。采用TCP还是UDP协议?为什么?
26、FTP协议(了解)
27、HTTP请求报文与响应报文首部结构
28、HTTP1.0、HTTP1.1、HTTP2.0对比
29、HTTP与HTTPS对比
30、HTTPS加密流程
31、方法:GET、HEAD、POST、PUT、DELETE
32、状态码:1、2、3、4、5**
33、cookie与session区别
34、输入一个URL到显示页面的流程(越详细越好,搞明白这个,网络这块就差不多了)
参考书籍:《计算机网络》(第5版)、《TCP/IP详解卷1:协议》、《图解HTTP》
下载地址:

[*]链接:https://pan.baidu.com/s/1fRYNn3E0yEOLiQUSyBlxKg
[*]提取码:69dc
三、操作系统(1个月)

1、进程与线程区别
2、线程同步的方式:互斥锁、自旋锁、读写锁、条件变量
3、互斥锁与自旋锁的底层区别
4、孤儿进程与僵尸进程
5、死锁及避免
6、多线程与多进程比较
7、进程间通信:PIPE、FIFO、消息队列、信号量、共享内存、socket
8、管道与消息队列对比
9、fork进程的底层:读时共享,写时复制
10、线程上下文切换的流程
11、进程上下文切换的流程
12、进程的调度算法
13、阻塞IO与非阻塞IO
14、同步与异步的概念
15、静态链接与动态链接的过程
16、虚拟内存概念(非常重要)
17、MMU地址翻译的具体流程
18、缺页处理过程
19、缺页置换算法:最久未使用算法、先进先出算法、最佳置换算法
ps:操作系统的内容看起来不是很多,实际上每个问题答案的底层原理要弄懂还是很考验基本功的。比如:互斥锁与自旋锁的区别,实际上涉及到阻塞时线程的状态是不一样的。互斥锁阻塞的线程是挂起的,此时系统会优先执行其它可执行的线程,就会将阻塞的线程切换到可执行线程,而当临界区执行的时间非常短时,此时线程切换频繁、开销较大,此时就会采用自旋锁的方式,让阻塞的线程处于忙等状态。

参考书籍:《深入理解计算机系统》
下载地址:

[*]链接:https://pan.baidu.com/s/1RoDN317X-C6izxY6CwuxTA
[*]提取码:iy8u

四、网络编程(1个月)

1、IO多路复用:select、poll、epoll的区别(非常重要,几乎必问,回答得越底层越好,要会使用)
2、手撕一个最简单的server端服务器(socket、bind、listen、accept这四个API一定要非常熟练)
3、线程池
4、基于事件驱动的reactor模式
5、边沿触发与水平触发的区别
6、非阻塞IO与阻塞IO区别
参考书籍:《Unix网络编程》
ps:网络编程掌握以上几点就够了,要搞明白还是要花很久时间的。
下载地址:

[*]链接:https://pan.baidu.com/s/1MD9WAAmSOCz5fhlUMU0bsg
[*]密码:bwyt

五、数据结构与算法及刷题(2个月)

1、数组
2、链表
3、栈
4、队列
5、堆
6、二叉树:二叉搜索树、平衡树、红黑树
7、B树、B+树
8、哈希表及哈希冲突
9、排序算法:冒泡排序、简单选择排序、插入排序、希尔排序、归并排序、堆排序、快速排序
(要求能够面试时手写出堆排序和快速排序)
10、二分法:旋转数组找target
11、回溯法:全排列、复原IP地址
12、动态规划(掌握基本的动态规划的几个题其实就够了,如:斐波那契数列、接雨水、股票的最佳买入时机)
参考书籍:《图解算法》《剑指offer》
ps:建议刷题与数据结构算法同时进行,这样理解得更深入。刷题网站leetcode,刷完《剑指offer》其实就能解决大部分面试手撕了。
书籍下载:

[*]链接:https://pan.baidu.com/s/1GZEp8KI1Fm0U4Uek7BOWAw
[*]提取码:am4o
六、mySQL数据库(7天~15天)

1、数据存储引擎:InnoDB、myISAM、Memory
2、数据库索引类型及原理:B+树索引、哈希表索引
3、锁:悲观锁、乐观锁
4、事务:事务的四大特性(ACID)、事务并发的三大问题、事务隔离级别及实现原理
5、多版本并发控制实现机制(MCVV)原理
参考书籍:《高性能MySQL》
ps:这里也可以参考本人写的博客:mysql知识点总结。
下载地址:

[*]链接:https://pan.baidu.com/s/1-_9Cwq1qCxAr041nDWe0sg
[*]提取码:fy0y
七、项目(2个月)

如果时间够的话就可以写一个项目,当然大部分人写的项目都是一个烂大街的项目,也就是“web高性能服务器”。其实就是根据陈硕大神写的《Linux高性能服务器编程:使用muduo C++网络库》进行改编,当然啦,读懂这本书还是很耗时的,学习其中的思想也会受益匪浅的。
总结
按照上面推荐的内容来学习的话,要学习得深入一点的话1年的时间肯定需要的,甚至2年也不足为其。当然对于非科班的学生来说,大部分都没有充足的时间的,这时候建议尽量把C++基础、计算机网络、操作系统、网络编程、数据结构与算法这五个部分的内容学得很扎实,大概6个月的时间。
戳下面获取面试真题:
大厂15万字C++开发面试手册出炉(C++和计算机基础全有)​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487041&idx=1&sn=1c49fe6e12b1e52f66462b8b942e1644&chksm=fdb3f09fcac47989e399f52a975a6d2b18bd15e8cdfe720e3d878866f2d05c758318e2f6241f#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487041&idx=1&sn=1c49fe6e12b1e52f66462b8b942e1644&chksm=fdb3f09fcac47989e399f52a975a6d2b18bd15e8cdfe720e3d878866f2d05c758318e2f6241f#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487041&idx=1&sn=1c49fe6e12b1e52f66462b8b942e1644&chksm=fdb3f09fcac47989e399f52a975a6d2b18bd15e8cdfe720e3d878866f2d05c758318e2f6241f#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487041&idx=1&sn=1c49fe6e12b1e52f66462b8b942e1644&chksm=fdb3f09fcac47989e399f52a975a6d2b18bd15e8cdfe720e3d878866f2d05c758318e2f6241f#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487041&idx=1&sn=1c49fe6e12b1e52f66462b8b942e1644&chksm=fdb3f09fcac47989e399f52a975a6d2b18bd15e8cdfe720e3d878866f2d05c758318e2f6241f#rd校招进大厂,9大核心课程知识,熬夜整理成思维导图送给大家​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487009&idx=1&sn=4495414184e17ee2c4c22cf4f55db467&chksm=fdb3f0ffcac479e9c97c6f70662ae09976b3bf3d49aab7a12bb950db8f8a7502dc39fc24c5e3#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487009&idx=1&sn=4495414184e17ee2c4c22cf4f55db467&chksm=fdb3f0ffcac479e9c97c6f70662ae09976b3bf3d49aab7a12bb950db8f8a7502dc39fc24c5e3#rd八、推荐阅读书单
正如侯捷老师所说C++ 相关的书籍也非常多,如天上繁星。 广博如四库全书者有 《The C++Programming Language》 《C++ Primer》,深奥如山重水复者有《The Annotated C++ Reference Manual》、《Inside The C++ Object Model》,细说历史者有《The Design And Evolution Of C++》、《Rumiations on C++》,独沽一味者有《Polymorphism in C++》、《Genericity in C++》,独树一帜者有《Design Patterns》、《C++ FAQs》,程序库大全有之《The C++ Standard Library》.....
至于书单的话,可以看下这个C++ 最全书单,包含几十本经典的PDF和下载方式:
【知乎】linux C++技术路图及推荐学习资料下载华为最牛逼的c++ 基础与提高PDF​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486995&idx=1&sn=382ef6a0c1d20bdcc4531463024a8060&chksm=fdb3f0cdcac479dbf38c2db05f3d57ef6cb2acbd2edf977244523026a58258520a784933810b#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486995&idx=1&sn=382ef6a0c1d20bdcc4531463024a8060&chksm=fdb3f0cdcac479dbf38c2db05f3d57ef6cb2acbd2edf977244523026a58258520a784933810b#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486995&idx=1&sn=382ef6a0c1d20bdcc4531463024a8060&chksm=fdb3f0cdcac479dbf38c2db05f3d57ef6cb2acbd2edf977244523026a58258520a784933810b#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486995&idx=1&sn=382ef6a0c1d20bdcc4531463024a8060&chksm=fdb3f0cdcac479dbf38c2db05f3d57ef6cb2acbd2edf977244523026a58258520a784933810b#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486995&idx=1&sn=382ef6a0c1d20bdcc4531463024a8060&chksm=fdb3f0cdcac479dbf38c2db05f3d57ef6cb2acbd2edf977244523026a58258520a784933810b#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486995&idx=1&sn=382ef6a0c1d20bdcc4531463024a8060&chksm=fdb3f0cdcac479dbf38c2db05f3d57ef6cb2acbd2edf977244523026a58258520a784933810b#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486995&idx=1&sn=382ef6a0c1d20bdcc4531463024a8060&chksm=fdb3f0cdcac479dbf38c2db05f3d57ef6cb2acbd2edf977244523026a58258520a784933810b#rd(PS:侯捷 C++ 视频课程一直都被看过的同学广为推荐,最近发现 B 站关于侯捷老师的 C++ 视频课程几乎全部被下架了,于是自己搜集了一套非常全的视频,大家赶紧去下载保存备用:
侯捷C++全套视频|含下载方式​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486987&idx=1&sn=6002f1b0c275f97a33ee2e3e8f53ab4f&chksm=fdb3f0d5cac479c3368acf8cecbf5b0669ff76db88b3f32d3543fcd8f0f5c820845102493c16#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486987&idx=1&sn=6002f1b0c275f97a33ee2e3e8f53ab4f&chksm=fdb3f0d5cac479c3368acf8cecbf5b0669ff76db88b3f32d3543fcd8f0f5c820845102493c16#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486987&idx=1&sn=6002f1b0c275f97a33ee2e3e8f53ab4f&chksm=fdb3f0d5cac479c3368acf8cecbf5b0669ff76db88b3f32d3543fcd8f0f5c820845102493c16#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486987&idx=1&sn=6002f1b0c275f97a33ee2e3e8f53ab4f&chksm=fdb3f0d5cac479c3368acf8cecbf5b0669ff76db88b3f32d3543fcd8f0f5c820845102493c16#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486987&idx=1&sn=6002f1b0c275f97a33ee2e3e8f53ab4f&chksm=fdb3f0d5cac479c3368acf8cecbf5b0669ff76db88b3f32d3543fcd8f0f5c820845102493c16#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486987&idx=1&sn=6002f1b0c275f97a33ee2e3e8f53ab4f&chksm=fdb3f0d5cac479c3368acf8cecbf5b0669ff76db88b3f32d3543fcd8f0f5c820845102493c16#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247486987&idx=1&sn=6002f1b0c275f97a33ee2e3e8f53ab4f&chksm=fdb3f0d5cac479c3368acf8cecbf5b0669ff76db88b3f32d3543fcd8f0f5c820845102493c16#rd他们让知识的传播变得更加的便捷,降低了后来者的学习门槛,当然啦也变相加重了内卷化.
最后给大家介绍一份计算机经典书籍,送大家一份硬核书籍资源:读大学跟工作期间,我买了很多书,大部分是一些技术书籍,也收集了这些书籍的电子版,都在这里,现在免费share给大家,包括了计算机类常用电子书,包括C,C++,Java,Python,Java,Linux,Go等,希望大家能认真阅读。点击下方链接直达获取:
计算机经典必读书单(含下载方式)码字不易,硬核码字更难,希望大家不要吝啬自己的鼓励,给我 :
@码农出击
一个点赞,鼓励下我!

chinayull 发表于 2023-10-3 19:23:03

武汉某985本硕,主要用C++进行开发,谈一下我的看法吧。
我面过很多使用C++开发的团队,我的感受是,语言往往并不是主要的考察点。面试官更看重的是(包括但不限于):

[*]你对你所掌握的知识的思考和认识,例如对于计算机体系结构、分布式系统、操作系统的理解。
[*]对于你之前做的项目的理解是否深入,对于一些技术,需要知道怎么做以及为什么这样做
而对于cpp,我认为至少需要掌握语言特性(语法&继承&封装&多态),熟练使用stl,理解一些语言机制(虚函数如何实现、static如何实现等),熟练掌握多线程编程(thread、mutex、condition_variable等)。
最后推荐一个C++的项目,CMU的15445的lab。这个lab需要你实现一些数据库中的模块,例如buffer pool、索引、执行器、锁管理器等等。推荐理由:

[*]课程实现了部分框架代码,代码写的干净漂亮,阅读别人好的源码是你自己写出好的源码的前提
[*]代码写完后,在提交的时候,项目中会有专门的程序检查你的代码是否符合规范,如果不符合规范,一律按error处理。这可以让你学会如何规范编写代码。
[*]实验的难度循序渐进,且有配套理论课程,上手更加平滑。
[*]课程内容本身是数据库领域的入门神课,练习C++的同时,还能把数据库的知识学一学,事半功倍。
以上。
页: [1]
查看完整版本: C++ 找工作校招需要掌握到什么程度?