我是一名武汉大学生(非211,非985),我经历了很多面试,反正好多,我算法特别的差,基本没刷过题。
时常被面试官刁难算法和数据结构,我的数据结构也特别差,十大排序与我无缘,我的表达能力也特别差,
紧张就容易结巴,这是背景,当然缺点有好多,不谈废话,忘君莫放弃!
C++学习分享
1.先随便找个C++基础视频看看(希望你有一定C基础,这样可以让你理解抽象和封装的思维),然后把侯捷
系列视频都看完这样你就了解了面向对象和泛型和基于对象编程 和函数式范式和STL和C++11/14和C++的
内存管理,同时关注下C++大会视频,了解C++的发展还有与时俱进。
2.书籍 inside C++ object model(语义学) ,Effective C++(专家经验) ,设计模式(这就面向对象)(选一本简单的最好,敲完),反正我是读了好几本
的,这肯定要读完的,然后 还有其他C++ 字典书籍 不详细说 看一点点就行,计算机网络方面最好是 unix 网络
编程(我没看,呜呜,我看的TCP详解一),程序员的自我修养,看几章 ,还有了解一些操作系统的知识,
最好是有 linux发行版的环境 加 windows 加mac (看经济,我穷)最好了,写代码学习最好,我算法看的是
漫画算法(不过我没怎么敲,卡死了,孤独九剑离我而去),最好最好了解一些其他C++库,如boost ,QT,
后面两个C++岗位匹配度非常高。
3.我的wps面试 = C++ 基础 + QT + 一点点数据结构 算法+ 一点点操作系统知识,我是线下一轮技术面的 ,一论HR的
就过,很快 ,写文字好累,我好懒,我就聊聊 C++三大“关键字“吧,面试就问了这,我觉得这算点干货吧,让我细细道来,
A.static 关键字 有什么用,我答 为免除”跨编译单元之初始化次序"问题,请以 local static object 替换 non-local object
因为 non-local object 构造于 main函数之前,如果 一个 non-local object 构造需要用到 另一个编译单元的 non-local
object 如果这个对象没构造 就会发生问题 然后还有static member function (这个很重要,我还是很菜,他的真意应用
到哪我还不知道),static 全局变量 的问题引入namespace
B.const 关键字 std::vector<int> vec;
const std::vector<int>::iterator iter = vec.begin(); top-level const
const_iterator low-level const
我觉得const 就这么点东西,举个例子 this 指针
A *const p 这就是 你看不见的参数 如果 这个成员函数变为 const this指针 会变为 const A* const p ;
当然这个const 成员函数也作用于mangling 的操作,这样一切问题迎刃而解了 再举个例子 来自C 阵营同学的疑问
为什么拷贝构造 参数为 const A& 为什么不能 A & ? 答案早就给了,多想想
C.new 表达式 采用洋葱法则一层层剥下去 说到new 呢? 有 new, new [] ,placement new STL容器 用 allocator
new 与 allocator 下面 操作 是来自于 operator new() operator new ()下 是 CRT 的 malloc ,再往下剥洋葱
就是 OS API such as HeapAllocator(), VirtualAllocator() (VC)
new 不能直接使用,为客户着想, 一般是 工厂方法 加 智能指针 ,直接使用必然发生leak freedom, 他们都要配套使用
不然 leak freedom ,自己做内存管理 可以 自己设计 allocator 比较著名的 是 pool_allocator 传统方法 重载 operator new()
说到 malloc 市面上 有效率更好的 jemalloc tcmalloc ptmalloc, ending.
4. 感谢 学长,同学,学习分享,传承经验,感谢实习导师亲手讲解源码,解答疑惑。
全部评论
(4) 回帖