WPS C++开发面经分享

我是一名武汉大学生(非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. 感谢 学长,同学,学习分享,传承经验,感谢实习导师亲手讲解源码,解答疑惑。


#面经##金山WPS##C++工程师##校招#
全部评论
请问是那个暑假训练营吗
1 回复 分享
发布于 2021-06-09 23:57
是武汉的吗
2 回复 分享
发布于 2021-12-15 17:22
楼主面的是客户端吗
2 回复 分享
发布于 2022-01-27 14:14
楼主你好,请问你是实习、校招还是社招?
点赞 回复 分享
发布于 2021-04-10 18:48

相关推荐

01-20 10:55
已编辑
1.&nbsp;什么是C++中的模板特化?2.&nbsp;什么是多态?如何在C++中实现?3.&nbsp;什么是虚函数?它的作用是什么?4.&nbsp;C++中的构造函数和析构函数有什么区别?5.&nbsp;什么是抽象类和接口?如何定义它们?6.&nbsp;C++中的类型转换有哪些方式?7.&nbsp;什么是命名空间的嵌套?如何使用?8.&nbsp;如何使用std::mutex进行线程同步?9.&nbsp;C++中的智能指针如何实现自定义删除器?10.&nbsp;什么是RAII的优点?11.&nbsp;C++中的const修饰符有什么作用?12.&nbsp;如何实现一个简单的单例模式?13.&nbsp;什么是C++中的内存对齐?14.&nbsp;如何使用std::atomic实现原子操作?15.&nbsp;C++11引入的std::initializer_list是什么?16.&nbsp;如何使用std::tuple?它的使用场景是什么?17.&nbsp;C++中的decltype有什么作用?18.&nbsp;什么是函数对象(Functors)?19.&nbsp;如何实现一个简单的事件机制?20.&nbsp;C++中的std::move和std::forward有什么区别?21.&nbsp;什么是Lambda捕获?如何使用?22.&nbsp;C++中的std::promise和std::future是什么?23.&nbsp;如何使用std::chrono进行时间测量?24.&nbsp;C++中的std::array如何与std::vector进行比较?25.&nbsp;什么是std::string_view?它的优点是什么?26.&nbsp;C++中的using和typedef有什么区别?27.&nbsp;如何实现一个简单的观察者模式?28.&nbsp;C++中的std::any是什么?如何使用?29.&nbsp;什么是C++中的异常安全保证?30.&nbsp;如何使用std::filesystem处理文件系统操作?31.&nbsp;C++中的constexpr函数有什么限制?32.&nbsp;什么是std::optional的使用场景?33.&nbsp;如何在C++中实现一个简单的线程池?34.&nbsp;C++中的std::string如何支持拼接和查找?35.&nbsp;什么是C++中的static_assert?有什么用?36.&nbsp;如何使用std::copy和std::move进行拷贝和移动?37.&nbsp;C++中的std::vector如何动态调整大小?38.&nbsp;如何在C++中实现一个简单的计时器?39.&nbsp;C++中的std::list和std::vector的内存使用有什么不同?40.&nbsp;什么是C++中的命名空间别名?如何使用?41.&nbsp;如何使用std::variant进行类型安全的联合体?42.&nbsp;C++中的std::shared_mutex如何实现读写锁?43.&nbsp;如何在C++中实现一个简单的状态机?44.&nbsp;C++中的std::function如何与回调函数结合使用?45.&nbsp;什么是C++中的虚表(vtable)?46.&nbsp;如何使用std::for_each和Lambda表达式遍历容器?47.&nbsp;C++中的std::unordered_map是如何实现的?48.&nbsp;如何使用std::map和std::set进行排序?49.&nbsp;C++中的std::unique_lock和std::lock_guard有什么区别?50.&nbsp;如何在C++中实现一个简单的命令模式?问题答案已经整理到专栏中了,关注我分享更多知识。&nbsp;&nbsp; http://daxprogram.com
点赞 评论 收藏
分享
评论
12
57
分享

创作者周榜

更多
牛客网
牛客企业服务