腾讯同事内推的那位Linux C/C++后端开发同学面试没过......

最近同事内推了一位 Linux C/C++ 后端开发的同学到我们公司面试,很遗憾这位工作了两年的同学面试表现不是很好。我问了如下一些问题:

“redis持久化机制,redis销毁方式机制,mq实现原理,c++虚函数,hash冲突的解决,memcached一致性哈希,socket函数select的缺陷,epoll模型,同步互斥,异步非阻塞,回调的概念,innodb索引原理,单向图最短路径,动态规划算法。”

为了帮助更多的同学拿到满意的 offer,我整理了一下发出来,那么 Linux C/C++ 岗位一般会问哪些知识点呢?

思路分析

除了关于 c++ 虚函数这个问题以外,其他的大多数问题都与哪种编程语言关系不大,大多数是原理性和基础性的问题,少数是工作经验问题,我试着给大家分析分析。

语言基础

C++ 虚函数这是面试初、中级 C ++ 职位一个概率95%以上的面试题。一般有以下几种问法:

  1. 在有继承关系的父子类中,构建和析构一个子类对象时,父子构造函数和析构函数的执行顺序分别是怎样的?
  2. 在有继承关系的类体系中,父类的构造函数和析构函数一定要申明为 virtual 吗?如果不申明为 virtual 会怎样?
  3. 什么是 C++ 多态?C++ 多态的实现原理是什么?
  4. 什么是虚函数?虚函数的实现原理是什么?
  5. 什么是虚表?虚表的内存结构布局如何?虚表的第一项(或第二项)是什么?
  6. 菱形继承(类D同时继承B和C,B和C又继承自A)体系下,虚表在各个类中的布局如何?如果类B和类C同时有一个成员变了m,m如何在D对象的内存地址上分布的?是否会相互覆盖?

另外,时至今日,你一定要熟悉 C++11/14/17 常用的语言特性和类库,这里简单地列一下:

  • 统一的类成员初始化语法与 std::initializer_list
  • 注解标签(attributes)
  • final/override/=default/=delete 语法
  • auto 关键字
  • Range-based 循环语法
  • 结构化绑定
  • stl 容器新增的实用方法
  • std::thread
  • 线程局部存储 thread_local
  • 线程同步原理 std::mutex、std::condition_variable 等
  • 原子操作类
  • 智能指针类
  • std::bind/std::function

C++11/14 网上的资料已经很多了,C++17 的资料不多,重头戏还是 C++11 引入的各种实用特性,这就给读者推荐一本我读过的:

  • 《深入理解 C++11:C++11 新特性解析与应用》
  • 《深入应用 C++11:代码优化与工程级应用》
  • 《C++17 完全指南》
  • 《Cpp 17 in Detail》

算法与数据结构基础

说到算法和数据结构,对于社招人士和对于应届生一般是不一样的,对于大的互联网公司和一般的小的企业也是不一样的。下面根据我当面试官面试别人和找工作被别人面试经验来谈一谈。

先说考察的内容,除了一些特殊的岗位,常见的算法和数据结构面试问题有如下:

  1. 排序(常考的排序按频率考排序为:快速排序 > 冒泡排序 > 归并排序 > 桶排序)

一般对于对算法基础有要求的公司,如果你是应届生或者工作经验在一至三年内,以上算法如果写不出来,给面试官的影响会非常不好,甚至直接被 pass 掉。对于工作三年以上的社会人士,如果写不出来,但是能分析出其算法复杂度、最好和最坏的情况下的复杂度,说出算法大致原理,在多数面试官面前也可以过的。注意,如果你是学生,写不出来或者写的不对

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值