这些都是从zhihu上看到的。

指针,多态(虚函数表、内存layout),作用域,内存的管理

算法与数据结构,数据结构上由掌握哈希、优先级队列,算法上有字符串处理,简单的DFS、BFS、动态规划

系统的知识,进程、线程、协程、锁的使用,消息队列、共享内存、还有网络协议,epoll,select等。问题有,通过哈希来划分,通过队列来序列化操作。会结合你实际做过的项目来提问,写过web server,key-val数据库,度过redis源码,可以结合系统知识考察,确认是不是真的理解这些东西,是不是真的吸收了;

--------------------------

from zhihu chencw2ly

c++的知识,c++特性,多态,虚函数,vector和list实现的原理

多线程相关的,比如高并发,通信,然后还有和锁有关的东西;

数据库方面主要有,常用的sql语句,怎么提高数据库的性能,mysql和oracle的特性。

网络通信方面:主要就是tcp/ip和http,tcp/ip的几次握手,简单的客户端服务端的实现,http主要是http协议中的东西,比如http的格式,重要的有get/post的区别

linux会问一些常用的命令,比如查看进程,产看网络,修改权限,gcc相关的东西,

答的不好的话,就会进行白板编程。

建议:应届生,多刷题目,笔试成绩好的话,就好办。

---------------------------------

OOP三大项目:封装、继承、多态,v func是怎么实现的,v table是啥?前面的pure storagexx多重继承虚函数指针在内存中是什么样子的?

把所有的const static 各种情况都熟悉一遍,const pointer和pointer to const以及两者合体的区别?static 放在不同的地方不是一回事。

内存泄露肯定是会被问的,rule of three是基础,exception safe是难点。解决方法很简单,在工业界smart pointer就完了,没有那么多花样,工业界基本看不到裸指针。别小看exception safe,很耗时间去学的。

然后就是stl,大多数自诩懂c++的人,基本都将不明白 allocator是怎么回事。

RAII是啥玩意?至少听过。

os操作系统还是要好好看的。os学校出来的人基本都会集中在两个知识点上,进程管理和文件系统;进程管理堆非infra的开发类很重要,infra类两者都很重要。基本上知道进程是什么玩意,什么事context switch,现实中你干什么会触发它且cost什么。virtual mem和physical mem分别是什么?

分布式;

后端的话,好好看看和REST。以及js的single page application的原理(很多应用需要这个原理去减少延迟),以及c++是如何实现的,你对node和engin x多少需要点基础了解的。

看看mvc

设计模式

明白进程,stack和heap,给一个简单的程序,你能够在内存中给我画出来从头到尾的经过。

concurrent programming一般不会考到,也是最需要实际经验成长的。简单的例子最好能写出来,race conditon有些很复杂你看不出但简单的要能够说明白。

明白cpu cache是怎么运作的,为什么很多数据结构或算法明明很耗却很慢。Locality,局部性原理

如果你很好的明白concurrent,那instructions pipeline要是能够将明白更好了。

敏捷开发你要明白是真么一回事,code review,测试流程多少要有个概念。

template平时没有用过太过野性的方法,都是中规中矩。metaprogramming多少要明白好处在哪里?这玩意玩好了很厉害,美国在火星上那小车里面几乎都是metaprogramming。

static linking, dynamic linking优缺点。

怎么避免环形依赖。

从compile到linking到最后每一阶段所做的事情。

同样,如何manage 大型的c++ code,怎么分成模块,合理的继承。最最重要的就是怎么分模块进行测试。

让你现场写程序记得能加const就加const,小程序全部inline,能穿ref就别copy。开头一定要有哨兵,就是#ifndef #define  #endif

出手就是namespace,告诉别人你是干过活的。

去看google c++规范,c++是不同代码风格能写成截然不同的语言。

能用stl绝对不要自己写,tranform那些要会用。要会自己写comparator,尤其是传给set/map的。

一定要有进程的概念,比如如果只有一台机子,你自己弄个in mem cache肯定比redis块。

讲到smart pointer一定要提到一个思想,就是谁拥有这个指针。

大多数人看书只看第一章,所以用宏做计算的风险很可能会被考到,scott meyers effective c++第二章。

补充:

c++11不需要过度的在意,先看好继承,大多数工业界的人自己还在学习阶段,而且除了fancy的新项目,成熟的项目一般不会跟风追新。

但是smart pointer一定要看好,一般c++做出点样子的公司,内部都有自己的c++标准,很早就基本处于03和11之间的状态,主要就是smart pointer。

你能会自然就好,但是一般不会强求。和metaprogramming一样,面你的人在这方面可能还是停留在理论帝的水平,太多东西都是私下玩,很多东西工作中不一定总能碰到。

如果有时间,scott meyers的四本effectvie 绝对经典。

如果你能够上youtube,搜jon kalb在cppcon上的exception safe,讲的非常好,当年cppcon最佳talk。

最后心态:面试官一般不会指望应届生能够回答出所有的问题,但会倾尽所能地去问,这样虽然没几个人能全部回答上来,但是可以对这一批candiates得到一个很清晰都的层次,谁强谁弱。面试没有硬性分数线,谁做的更好,谁就能够脱颖而出。

还要注意打开话题,可以了解在学校时的非课堂技术爱好,了解到与人交流的能力。

强者留下,弱者离开,不会因为是应届生就放水什么的,何况大家都是应届生。

experienced有experienced的面法,一般会偏向做深入到领域层面看其是否和组里做的东西锲合。experienced很少有普招的,都是组里自己面。

一定要自己动手做,亲手做的东西,永远不会忘记;就算忘记了,几个关键字,就能想起来了。

最后一定不要忘记数据结构和算法的分量。

--

c++面试须知的更多相关文章

  1. JAVA 面试须知

    本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺. 1. Java中的原始数据类型都有哪些, ...

  2. python后端面试第八部分:制作简历和如何面试--长期维护

    ###############     就业指导    ################ 这里面有套路,你懂了这个套路,你会找到更好的工作,你会更快的找到工作, ,如何制作简历,五颗星 ,如何投递简历 ...

  3. 面试前必须知道的MySQL命令【explain】

    前言 只有光头才能变强 刷面试题的时候,不知道你们有没有见过MySQL这两个命令:explain和profile(反正我就见过了).. 之前虽然知道这两个命令大概什么意思,但一直没有去做笔记.今天发现 ...

  4. Java面试——你必须知道的122题

    1.Java面向对象中所有类的最终基类是什么? 参考答案 object,所有类都默认最终继承object,object是所有类的基类 2.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语 ...

  5. mysql经典面试必须知道的

    http://www.cnblogs.com/wangshouchang/p/6930443.html 在华三的时候就问道了数据集的事务的四种特性,事务的隔离级别,事务的存储过程等

  6. 面试阿里,字节跳动,华为必须知道的Java创建对象的5种方式

    Java创建对象的5种方式 1.直接new,调用了构造器2.通过clone(),没有调用构造器3.通过反射,调用了构造器4.通过反序列化,没有调用构造器5.通过Unsafe类的allocateInst ...

  7. 从零开始学习jQuery(剧场版) 你必须知道的javascript

    原文:从零开始学习jQuery(剧场版) 你必须知道的javascript 一.摘要 本文是jQuery系列教程的剧场版, 即和jQuery这条主线无关, 主要介绍大家平时会忽略的一些javascri ...

  8. 《程序员面试金典(第5版)》【PDF】下载

    <程序员面试金典(第5版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382252 内容简介 本书作者Gayle Laakma ...

  9. Python机器学习笔记:不得不了解的机器学习面试知识点(1)

    机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因 ...

随机推荐

  1. pta 编程题21 公路村村通

    其它pta数据结构编程题请参见:pta 题目 这道题考察最小生成树问题,用的是Prim算法. 和Dijkstra算法相比,没有了collect数组,因为dist[v] == 0就代表v被已收录. #i ...

  2. 第六十三课、C语言的异常处理

    http://www.cnblogs.com/gui-lin/p/6379101.html 一.异常处理 1.异常的概念 (1).程序在运行过程中可能产生异常 (2).异常(Exception)和Bu ...

  3. app之间的跳转和传参问题

    app 之间跳转和传参: 首先 创建2个app   formApp (需要跳转到另外app的项目)     toApp(被跳转的项目) 一:在toApp 项目中的操作: 1:创建URLSchemes ...

  4. PS 厘米与像素切换

    方法一: 快捷键 ctrl + r   打开标尺将鼠标放在标尺刻度上右键 出现菜单里修改即可: 方法二: 编辑---首选项---单位与标尺 修改即可:

  5. 人脸验证算法Joint Bayesian详解及实现(Python版)

    人脸验证算法Joint Bayesian详解及实现(Python版) Tags: JointBayesian DeepLearning Python 本博客仅为作者记录笔记之用,不免有很多细节不对之处 ...

  6. 多线程:InterlockedIncrement

    1.InterlockedIncrement保护多线程中操作的整数. #include <stdio.h> #include <windows.h> volatile long ...

  7. x5webview 微信H5支付

    mWebView.setWebViewClient(new WebViewClient() { // @Override // public boolean shouldOverrideUrlLoad ...

  8. 白鹭引擎eui控件的简单创建和管理方法

    一.创建ui文件: 1. 创建exml文件,改成group类型,拖入default.res.json文件里面,文件类型改成text. 2. 将创建的exml文件拖入控件,控件可以在属性面板命名. 3. ...

  9. jquery简易的三级导航

    <!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">   ...

  10. Scrapy分布式爬虫打造搜索引擎- (二)伯乐在线爬取所有文章

    二.伯乐在线爬取所有文章 1. 初始化文件目录 基础环境 python 3.6.5 JetBrains PyCharm 2018.1 mysql+navicat 为了便于日后的部署:我们开发使用了虚拟 ...