目录
一、自我介绍
晚啦!已经结束啦,如果有人跟你这么说,你可以反手给他一个大B窦,诚然确实不算早,但 “种一棵树最好是十年前,其次是现在” ,我一直相信,只要学,什么时候都不算晚。
本人双非本科,在度过两年并不算快乐的时光后,镇定思痛,开始思考未来?一个核心问题出现了,我能否找到个班上,大二暑假学,是否还来得及。
相信有不少人上了大学后,选择了一个自己不喜欢的专业,在大二努力专业却因为没有提前做规划,导致大二这一学期因为要补修而忙忙碌碌,学到的东西也是一知半解。最后迷途知返,幡然悔悟。
二、学习目标
核心思想,多思考,多行动
落下的就是落下了,放平心态,首先罗列好,譬如我自己,“要找到一份像样的工作,需要达到什么程度?”,(以C++为例)
1. C++基础
- C语言和C++有什么区别?
- struct和class有什么区别?
- extern "C"的作用?
- 函数重载和覆盖有什么区别?
- 谈一谈你对多态的理解,运行时多态的实现原理是什么?
- 对虚函数机制的理解,单继承、多继承、虚继承条件下虚函数表的结构
- 如果虚函数是有效的,那为什么不把所有函数设为虚函数?
- 构造函数可以是虚函数吗?析构函数可以是虚函数吗?
- 什么场景需要用到纯虚函数?纯虚函数的作用是什么?
- 了解RAII吗?介绍一下?
- 类的大小怎么计算?
- volatile关键字的作用
- 如何实现一个线程池?
- 了解各种强制类型转换的原理及使用?
- 指针和引用有什么区别?什么情况下用指针,什么情况下用引用?
- new和malloc有什么区别?
- malloc的内存可以用delete释放吗?
- malloc出来20字节内存,为什么free不需要传入20呢,不会产生内存泄漏吗?
- new[]和delete[]一定要配对使用吗?
- C++11新特性你都了解多少?
- 了解auto和decltype吗?
- 谈一谈你对左值和右值的了解,了解左值引用和右值引用吗?
- 了解移动语义和完美转发吗?
- 了解列表初始化吗?
- 平时会用到function、bind、lambda吗,都什么场景下会用到?
- 对C++11的mutex和RAII lock有过了解吗?
- 对C++11的智能指针了解多少,可以自己实现一个智能指针吗?
- enum 和 enum class有什么区别?
- 一般什么情况下会出现内存泄漏?怎么用C++在编码层面尽量避免内存泄漏。
- unique_ptr如何转换所有权?
- 谈一谈你对面向对象的理解
- 什么场景下使用继承方式,什么场景下使用组合?
- STL系列
- C++直接使用数组好还是使用std::array好?std::array是怎么实现的?
- std::vector最大的特点是什么?它的内部是怎么实现的?resize和reserve的区别是什么?clear是怎么实现的?
- deque的底层数据结构是什么?它的内部是怎么实现的?
- map和unordered_map有什么区别?分别在什么场景下使用?
- list的使用场景?std::find可以传入list对应的迭代器吗?
- string的常用函数
2. C语言
- const的作用有哪些,谈一谈你对const的理解?
- 描述char*、const char*、char* const、const char* const的区别?
- 指针常量和常量指针有什么区别?
- static的作用是什么,什么情况下用到static?
- 全局变量与局部变量的区别?
- 宏定义的作用是什么?
- 内存对齐的概念?为什么会有内存对齐?
- inline 内联函数的特点有哪些?它的优缺点是什么?
- 如何用C 实现 C++ 的面向对象特性(封装、继承、多态)
- memcpy怎么实现让它效率更高?
- typedef和define有什么区别?
- extern有什么作用,extern C有什么作用?
- 如何避免野指针?
- 如何计算结构体长度?
- sizeof和strlen有什么区别?
- 知道条件变量吗?条件变量为什么要和锁配合使用?
3. 设计模式
- 分别写出饿汉和懒汉线程安全的单例模式
- 说出观察者模式类关系和优点
- 说出代理模式类关系和优点
- 说出工厂模式概念和优点
- 说出构造者模式概念
- 说出适配器模式概念
4. 操作系统
- 进程和线程的区别?
- 操作系统是怎么进行进程管理的?
- 操作系统是如何做到进程阻塞的?
- 进程之间的通信方式有哪些?
- 什么是上下文切换,操作系统是怎么做的上下文切换?
- 线程是如何实现的?
- 线程之间私有和共享的资源有哪些?
- 一般应用程序内存空间的堆和栈的区别是什么?
- 进程虚拟空间是怎么布局的?
- 虚拟内存是如何映射到物理内存的?了解分页内存管理吗?
- 产生死锁的必要条件有哪些?如何避免死锁?
- 什么是大端字节,什么是小端字节?如何转换字节序?
- 信号和信号量的区别是什么?
- 锁的性能开销,锁的实现原理?
5. 编译原理
- gcc hello.c 这行命令具体的执行过程,内部究竟做了什么?
- 程序一定会从main函数开始运行吗?
- 如何确定某个函数有被编译输出?
- 动态链接库和静态链接库的区别是什么?
6.数据结构与算法
- 什么是数据结构?它有什么作用?
- 哪些数据结构你所了解?请列举一下。
- 什么是算法?它有什么作用?
- 常见的排序算法有哪些?它们的时间与空间复杂度是多少?
- 二叉树是什么?它有哪些特殊的类型?
- 栈和队列的区别是什么?你能否写出它们的代码?
- 哪些算法可以用来解决字符串匹配问题?
- 哪些算法可以用来解决最短路径问题?
- 什么是贪心算法?请举一个例子。
- 什么是动态规划?请举一个例子。
- 什么是回溯算法?请举一个例子。
- 你了解什么是哈希表吗?它有什么用处?
- 请解释一下递归是什么以及它的运作原理。
来自c++找工作校招需要掌握到什么程度? - 知乎(本人刚开始学,所以复制了这些问题,希望在后续的学习中,逐个解决)
当然除了C++,还得学习C语言、数据结构与算法,操作系统,mysql数据库,计算机网络,网络编程,最后就是做项目啦
路漫漫其修远兮,吾将上下而求索
三、怎么学习?
1.时间安排
假期早睡早起,个人觉得早6:30------晚11点最佳,11点上床睡觉保证睡眠。
开学了学校的课程跟着就行,主要是学自己的,向着目标前进。上课是学校的,下课是自己的。
毕竟现在才起步,得惜时如金,悬梁刺股。
总结:抓住一切学习时间
2.学习方式
循序渐进,一门一门来
网上有关的课程+动手+解决问题(输入)
gitte上,以及写博客,(每几天总结一下自己的学习内容来输出,复习巩固)
参加开源项目
长期坚持
四、对未来的展望
先输出个30000行代码,如果每天一百行那么需要300天,四舍五入就是一年哈哈哈哈呜呜呜
找到个好班上,未来可以进大厂!!!!
个人非常崇拜张小龙,所以对腾讯有好感,希望以后能进入腾讯,成为下一个张小龙
这篇博客也是对自己的勉励吧,学不动了就来看看,准大三学编程,我一定行!
腾讯公司还涉足金融、影视、音乐、文学等多个领域。腾讯公司的核心业务是社交娱乐,主要经营QQ和微信等社交平台。腾讯公司在国内的市场份额一直位居前列,是中国互联网行业的领航者之一。同时,腾讯公司在全球范围内也有影响力,是全球最有价值的互联网公司之一。