分享面试经验,通过例题分析国内面试的风格及准备方法
1) C/C++部分:
2)实现 memcpy 函数
STL 中 vector 的实现原理
2)概率题部分:
给 N 张牌和一个随机函数,设计一个算法对这堆牌进行洗牌
3)智力题部分
25 匹马,5 个赛道,最少赛多少次找出前三
4)操作系统部分
进程和线程的区别和联系
5)大数据部分
100 亿个整数,如何找到中位数
6)算法题部分
手写快排
手写堆
刷LintCode
本节通过真实的笔试、面试题讲解 C++相关的基础内容,包括各种关 键字的作用,字节对齐,智能指针,单例模式等
1) 叙述智能指针的原理
衍生出 STL 中 auto_ptr 以及 shared_ptr 的使用
如果出现循环引用如何处理?
2) C++单例模式写法
衍生问题:如何定义一个只能在堆上定义对象的类?栈上呢?
3) struct 的字节对齐问题
4) C 与 C++易混淆概念分析
引用和指针有什么区别? const 和 define 有什么区别? new 和 malloc 有什么区别? define 和 inline 有什么区别?
5) static 关键字用法总结
衍生问题:成员函数能否声明为 static 和 const 的呢? static 函数能否调用非 static 函数
6) const 关键字用法
7) C++四种强制类型转换
本节详细讲解 C/C++面试中非常高频的虚函数、虚继承以及 C++对象 内存模型,从此遇到这类问题不再“虚”!
1) C++虚函数详解
什么是虚函数,有什么作用? 虚函数实现原理:包括虚函数表、虚函数指针等 衍生问题:为什么 C++里访问虚函数比访问普通函数慢? 为什么需要虚析构函数?内联函数、构造函数、静态成员函数可以是虚函数吗?构造函数中可以调用虚函数吗?
2) C++虚继承详解
为什么需要虚继承? 虚继承实现原理解析
3) C++对象内存模型详解
融合虚函数、虚继承,讲解 C++对象模型
本节详细讲解国内面试中高频的智力题, 并总结常见的解决这类问题的思路与技巧
10+个常见智力面试题
操作系统相关的面试问题
1、请设计一个抽象类,用来支持有序数组归并任务
2、请设计一个LRU Cache
3、设计一个在线聊天系统
4、设计一个基于内存的简单文件系统