打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C ,这样学!

大家好,我是小北。

一、C 考察啥?

对于 C 岗位面试来说,基本上语言层面考察候选人以下几个方面:

  • 对于指针、内存的理解

  • 对于运行时Runtime的理解

  • 一些语法特性和关键字的掌握

  • C 11 的一些特性,比如智能指针

  • STL部分容器的算法和内存分配原理

下面👇细化一下这些具体的知识:

1.1 基础语言特性(必备)

首先是语言的基础知识,一些关键字和实现原理等:

  • 指针、引用、数组、内存
  • 引用与指针区别
  • C 和 C 的一些区别,比如 new、delete 和 malloc、free 的区别
  • 虚机制:虚函数、虚函数表、纯虚函数
  • 继承、虚继承、菱形继承等
  • 多态:动态绑定,静态多态
  • 重写、重载
  • 智能指针原理:引用计数、RAII(资源获取即初始化)思想
  • 智能指针使用:shared_ptr、weak_ptr、unique_ptr等
  • 一些关键字的作用:static、const、volatile、extern
  • 四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast
  • STL部分容器的实现原理,如 vector、deque、map、hashmap

1.2 进阶语言特性(推荐)

  • 模板特化、偏特化,萃取 traits 技巧
  • 编译链接机制、内存布局(memory layout)、对象模型
  • C 11 部分新特性,比如右值引用、完美转发等这里列出来的只是一些比较重要的部分,实际上可能只算 C 的冰山一角, 大家且学且珍惜吧,这不 C11 还没整透彻,C 20 又出来了,生命不息,学习不止。

二、怎么准备?

2.1 《C Primer》

这本书基本包括了 C 11 的全部特性,最好把前面三部分:C基础、C标准库、类设计者的工具都看一遍,我当时花了一个多月断断续续看到了第16章模板那里。如果时间不够的情况下,不建议挨着挨着看了,一定要翻目录,挑重点的看。

2.2 Effective 系列

包含 《Effective C 》、《More Effective C 》、《Effective STL》第一本是重点,光看《C Primer》缺少实践的话,大概率还写不出合格的 C 代码,而《Effective C 》就是通过 55 条非常具体的做法告诉你什么样才是符合 C 编码规范的,可以缩短你写出合格 C 代码的时间,减少踩坑,强烈推荐必读。

后面两本优先级稍低,可以有时间再读。

2.3 《STL 源码剖析》和《深度探索 C 对象模型》

看完 Primer 和 Effective,你应该已经能够比较熟练的使用C了,但是还缺少对 C 底层实现机制的认识。比如虚函数表、成员变量布局等,同时对于 STL 库可能也仅仅停留在使用上。推荐的这两本可以分别完善你在 C 底层实现和 STL 源码、原理上的认识。而面试如果问 C 的比较深入的话,就会涉及 STL 源码和 C 一些底层机制。

2.4 侯捷老师视频

以上书籍同时建议和侯捷老师的视频配合服用,效果更佳。直接在 B 站搜索「候捷 C 」即可,主要有以下几个系列(最新消息:目前公开视频网站平台几乎都已经下架了):

  • 《C 内存管理》
  • 《STL源码分析》
  • 《C STL与泛型编程高级》
  • 《C 11 新特性》我基本都看了,收获挺大的,建议看下,可以开倍速。侯捷老师的视频课程可以在这获取学习: https://www.yuque.com/csguide/index/xubsawiwk3grb24r

三、阅读建议

但是我预估,完整的将上述资料仔细的看完,至少需要给自己预留半年以上的时间,时间如果不够半年,那么只能挑重点,我认为的重点:

  • 《C Primer》 按照目录索引看你欠缺的部分,尤其是拷贝控制、面向对象、动态内存、泛型算法那几章
  • 《Effective C 》这本书建议看完,估计2周能看完
  • 《深度探索 C 对象模型》这本书将前面3章左右看完,建立起对于内存模型的整体概念,大概1- 2周
  • 《STL源码剖析》,重点看下 map、vector、queue 这几个,其它的选看

四、 C 面试快速突击专栏:《C 面试指北》

这是小北在星球 内亲自整理和原创的 C 面试八股文,目前是星球内读者专属专栏,这里面的八股文不像大家在外面看到牛客网那种,问题都是几句话简略的回答

力争给大家讲懂每一个高频考点,不单单有文字描述,还有代码示范、画图,以及扩展学习这个知识点该去看什么书,看什么博客:

这里面每一篇都几乎是上千字,总共60篇,10w字左右,并且每一个知识点都标星表示重要程度,方便大家面试前快速突击:

就拿智能指针来说,我知道大厂很容易考察手写,所以这里会给大家深入剖析源码,以及带大家实现简易版本的.

还会从 shared_ptr 扩展到 doubel free、enable_shared_from_this、线程安全这些知识上,目的就是不让大家去死记硬背概念,而是从实际应用出发理解住,因为我相信系统化的学习才能真正的理解、融汇贯通:

又比如,extern 这个关键字的作用,很多面经都是几句话带过,但是实际上要深入理解这个特性,必须要掌握链接相关知识,所以我在这里会补充链接的背景知识,同时提供大家深入、系统学习需要去看哪本书,哪一章节:

其它内容就不一一展示了,总之这份 C 八股文总字数近 10w,可以说大厂面试 C 语言的问题几乎都在里面可以找到

阅读地址

加入星球 后,看第二个置顶帖子,即可在线阅读~

后续会在星球整理为 PDF 方便大家阅读,目前是使用语雀在线文档进行阅读。

加入方式

这里依然申请了加入星球的40元优惠券,数量不多,大家需要的话可以扫码领劵加入一波,如果感觉不合适,三天内知识星球APP可以直接全额退款!可以先扫码体验一下:

--

除了C 专栏,还有其它专栏介绍,包含各种学习路线、资源:星球专属专栏

我在星球里详细回答了几百个问题,上百篇精华帖子,加入后记得看星球的置顶内容,这绝对是今年最值的一笔投资!

星球内容截图
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C++11 中值得关注的几大变化(详解) | 酷壳
GCC4.7.0库里的shared
面试题干货在此
Boost智能指针:shared
c 应该怎么学
C中内存建立与释放的函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服