亡羊补牢,怎么搞定c++春招/实习,避免0offer的尴尬~
24届的同学我想大体是来不及了,25 26届的同学可以作为一定的参考。
c++就业大前提:除了极少数的岗位之外,大部分的c++岗位都是需要本科及本科以上的学历,最好还是计算机相关专业。
一、技术能力
核心技术点包括:
1.c++基础:重点需要掌握一些关键字、面向对象以及STL容器的知识 特别是STL
- 指针与引用的区别
- C 与 C++ 的区别
- struct 与 class 的区别
- struct 内存对齐问题
- sizeof 与 strlen 区别
- 面向对象的三大特性:封装、继承、多态
- 类的访问权限:private、protected、public
- 类的构造函数、析构函数、赋值函数、拷贝函数
- 移动构造函数与拷贝构造函数对比
- 内存分区:全局区、堆区、栈区、常量区、代码区
- 虚函数实现动态多态的原理、虚函数与纯虚函数的区别
- 深拷贝与浅拷贝的区别
- 一些关键字:static, const, extern, volatile 等
- 四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast
- 静态与多态:重写、重载、模板
- 四种智能指针及底层实现:auto_ptr、unique_ptr、shared_ptr、weak_ptr
- 右值引用
- std::move函数
- 迭代器原理与迭代器失效问题
- 一些重要的 STL:vector, list, map, set 等
- 容器对比,如 map 与 unordered_map 对比
- set 与 unordered_set 对比
- vector 与 list 比较
推荐书籍:《c++ primer》 《STL源码剖析》 《深度探索c++对象模型》
2.计算机网络:面试必问,不分校招社招,特别是如果去非Java系的大厂,比如说字节、腾讯这种
2.1物理层、链路层
- MTU,MAC地址,以太网协议
- 广播与 ARP 协议
2.2网络层
- ip 地址分类
- IP 地址与 MAC 地址区别
- 子网划分,子网掩码
- ICMP 协议及其应用
- 路由寻址
- 局域网,广域网区别
2.3传输层(主要就是 TCP)
- TCP首部报文格式(SYN、ACK、FIN、RST必须知道)
- TCP滑动窗口原理,TCP 超时重传时间选择
- TCP 拥塞控制,TCP 流量控制
- TCP 三次握手与四次挥手以及状态码的变化
- TCP连接释放中TIME_WAIT状态的作用
- SYN 泛洪攻击
- TCP 粘包,心跳包
- UDP 如何实现可靠传输
- UDP 与 TCP 的区别
- UDP 以及 TCP 的应用场景
2.4应用层
- DNS 原理以及应用
- HTTP 报文格式,HTTP1.0、HTTP1.1、HTTP2.0 之间的区别
- HTTP 请求方法的区别:GET、HEAD、POST、PUT、DELETE
- HTTP 状态码
- HTTP 与 HTTPS 的区别数字证书,对称加密与非对称加密
- cookie与session区别
书籍推荐:《图解HTTP》、《计算机网网络:自顶向下》、《TCP/IP详解卷1:协议》
3.操作系统:都要会,但是面试问的没有计算机网络相关的多
- 进程与线程区别
- 线程同步的方式:互斥锁、自旋锁、读写锁、条件变量
- 互斥锁与自旋锁的底层区别
- 孤儿进程与僵尸进程
- 死锁及避免
- 多线程与多进程比较
- 进程间通信:PIPE、FIFO、消息队列、信号量、共享内存、socket
- 管道与消息队列对比
- fork进程的底层:读时共享,写时复制
- 线程上下文切换的流程
- 进程上下文切换的流程
- 进程的调度算法
- 阻塞IO与非阻塞IO
- 同步与异步的概念
- 静态链接与动态链接的过程
- 虚拟内存概念(非常重要)
- MMU地址翻译的具体流程
- 缺页处理过程
- 缺页置换算法:最久未使用算法、先进先出算法、最佳置换算法
推荐书籍:《现代操作系统》
4.数据库MySQL:数据库一般主流的有MySQL和oracle。不过大部分公司都是用的MySQL 面试也是属于必问 毕竟工作crud才是常态
- 语句相关
- 索引相关
- 事务相关
- 锁相关
- 日志相关
- 缓存相关
推荐书籍:《MySQL必知必会》
5.网络编程:基本是面试的重灾区。很多公司都爱问。特别是IO多路复用,同步非同步IO,阻塞非阻塞。腾讯基本上都会问到
- IO多路复用:select/poll/epoll的区别 非常重要 几乎是必问的。回答思路是往底层靠
- 手撕一个最简单的server端服务器(socket、bind、listen、accept这四个API一定要非常熟练)
- 线程池
- reactor
- 边沿触发与水平触发的区别
- 非阻塞IO与阻塞IO的区别
推荐书籍:《Unix网络编程》
6.数据结构与算法:算法是最难速成的,从基础数据结构到各种算法的思路再到力扣刷题 需要大家提早准备
6.1初学数据结构与算法
- 链表
- 队列
- 栈
- 哈希表
- 二叉树
- 图
- 十大排序
- 二分查找
6.2算法思想
- 递归
- 深度与广度搜索
- 枚举
- 动态规划
6.3力扣刷题:200-300道
推荐书籍:《剑指offer》
不管方向如何,基础的技术能力是每一个从事c++开发的同学都需要去掌握的。
1000道技术面试经典题:PDF百度云盘下载地址:链接:https://pan.baidu.com/s/1xpY6kLygUwMXUuJ5Swxe5Q?pwd=3d6h 提取码:3d6h
二、项目经验
在累积项目经验的过程出会出现三个难点
第一个就是不知道项目去哪里找?
缺项目的同学可以看一下我之前分享的80个GitHub上的白嫖项目,大家可以自行选择练习。
整理了GitHub上80个c/c++的项目,看着学吧~不保熟
第二个就是找到的项目自己驾驭不了,无法完全实现。
第三个就是copy了代码,纯复刻。对细节不求甚解。最后到面试阶段,并不加分。
三、实习经历
实习经历重不重要?会不会对自己的求职有影响?
有实习经历肯定是加分的。不然现在也不会有我们所说的日常实习和暑期实习。
虽然我们掌握的编程技术以及我们自己也有练习一些项目,但是实习会让我们接触到真实的开发项目,会很好的扩展你的开发思维和熟悉职场环境和工作流程。
至于实习公司如何选择?大厂还是小厂?
在选择实习公司的时候,大家只需要注意三点
1.能不能够接触到项目
2.能不能拿到钱
3.能不能开实习证明
至于大厂还是小厂,有条件的话肯定是选择大厂。
四、简历书写
简历内容写足7点
- 学校
- 学历
- 成绩
- 奖项
- 技术能力
- 实习经历
- 项目经验
之前我也有详细分享过简历该如何学习,对一方面还有了解需求的同学可以破站找同名。
五、岗位投递
除了学校提供的招聘公司之外,大家如果想有更多的面试机会,自己就一定要去自动出击。
200+24春招/25实习求职岗位整理文档地址:链接:https://pan.baidu.com/s/1832djoQdy-rrESdCSFFELA?pwd=ydw2 提取码:ydw2
六、技术方向
七、薪资谈判
白菜价是没有议价空间的,议价主要自信来源于你的实习经历的匹配度以及技术面试时你的回答的深度和广度 是否满意 以及就是你有同级别公司的有竞争力的offer 会是你很好的议价谈判条件。
#23届找工作求助阵地#