0.我们的公众号:扶摇就业,欢迎前往,更多面经内推,祝您早日拿到offer奥~

1.​数组指针和指针数组区别

数组指针只是一个指针变量,是C 语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。

2.C++多态有哪几种?

多态:父类型的引用指向子类型的对象
静态多态(函数重载和运算符重载),是在编译的时候,就确定调用函数的类型;
动态多态(虚函数实现),在运行的时候,才能确定调用的是哪个函数,动态绑定。运行基类指针指向派生类的对象,并调用派生类的函数。

3.C++析构和构造的顺序,为什么析构函数最好是虚函数

1)构造函数顺序:先基类、再数据成员中是类对象的构造函数、最后派生类构造函数的函数体
2)析构函数顺序:与构造函数相反
​3)析构函数最好是虚函数:若派生类有一个指向动态内存分配的数据成员,而又将基类的指针指向派生类对象,同时基类的析构函数又不是虚函数的话,编译器就实施静态绑定,释放基类指针所指对象的空间时候只执行基类的析构函数,不执行派生类的析构函数,那派生类动态分配的数据成员所申请的空间就不能被释放,这就造成了内存泄漏。

4.进程间的通信方式

1)管道:半双工通信方式、数据单向流动、只能在父子进程间使用
2)命名管道:半双工,允许无亲缘关系进程间的通信
3)信号量:计数器,控制多个进程对共享资源的访问
4)共享内存:映射一段能被其他进程所访问的内存
5)消息队列:消息的链表,存放在内核中并由消息队列标识符标识
6)套接字:不同设备间的进程通信
7)全双工管道

5.同步和异步的概念

所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回,不继续执行后续操作
所谓异步,就是发出一个功能调用时,调用者在没有得到结果之前,就可以继续执行后续操作。当这个调用完成后,一般通过状态、通知和回调来通知调用者。对于异步调用,调用的返回并不受调用者控制。
阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回非阻塞调用指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回
同步是个过程,阻塞是线程的一种状态。多个线程操作共享变量时可能会出现竞争。这时需要同步来防止两个以上的线程同时进入临界区,在这个过程中,后进入临界区的线程将阻塞,等待先进入的线程走出临界区。

6.OSI、TCP/IP、五层协议的体系结构、以及各层协议作用

OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。 
五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。
每一层的协议如下
物理层:RJ45、CLOCK、IEEE802.3(中继器、集线器) 
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机) 
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 
(路由器) 传输层:TCP、UDP、SPX
会话层:NFS、sql、NETBiOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、HTTP、SMTP、WWW、NFS、Telent
每一层的作用如下: 
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit) 
数据链路层:将比特组装成帧和点到点的传递(帧Frame) 
网络层:负责数据包从源到宿的传递和网际互连(包PackeT) 
传输层:提供端到端的可靠报文传递和错误恢复(段segment) 
会话层:建立、管理和终止会话(会话协议数据单元SPDU) 
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU) 
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

7.简述快速排序过程

1)选择一个基准元素,通常选择第一个元素或者最后一个元素,
2)通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的元素值比基准值大。
3)此时基准元素在其排好序后的正确位置
4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。

8.快速排序的改进

只对长度大于k的子序列递归调用快速排序,让原序列基本有序,然后再对整个基本有序序列用插入排序算法排序。实践证明,改进后的算法时间复杂度有所降低,且当k取值为 8 左右时,改进算法的性能最佳。
选择基准元的方式
对于分治算法,当每次划分时,算法若都能分成两个等长的子序列时,那么分治算法效率会达到最大。也就是说,基准的选择是很重要的。选择基准的方式决定了两个分割后两个子序列的长度,进而对整个算法的效率产生决定性影响。最理想的方法是,选择的基准恰好能把待排序序列分成两个等长的子序列。  
方法1 固定基准元如果输入序列是随机的,处理时间是可以接受的。如果数组已经有序时,此时的分割就是一个非常不好的分割。
方法2 随机基准元这是一种相对安全的策略。由于基准元的位置是随机的,那么产生的分割也不会总是会出现劣质的分割。在整个数组数字全相等时,仍然是最坏情况,时间复杂度是O(n^2)。实际上,随机化快速排序得到理论最坏情况的可能性仅为1/(2^n)。所以随机化快速排序可以对于绝大多数输入数据达到O(nlogn)的期望时间复杂度。
方法3 三数取中引入的原因:虽然随机选取基准时,减少出现不好分割的几率,但是还是最坏情况下还是O(n^2),要缓解这种情况,就引入了三数取中选取基准。
分析:最佳的划分是将待排序的序列分成等长的子序列,最佳的状态我们可以使用序列的中间的值,也就是第N/2个数。可是,这很难算出来,并且会明显减慢快速排序的速度。这样的中值的估计可以通过随机选取三个元素并用它们的中值作为基准元而得到。事实上,随机性并没有多大的帮助,因此一般的做法是使用左端、右端和中心位置上的三个元素的中值作为基准元。

9.TCP和UDP的区别?

1. TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。 
2. TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。 
3. TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。附:TCP对应的协议和UDP对应的协议 
TCP对应的协议: 
(1) FTP:定义了文件传输协议,使用21端口。 
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。 
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。 
(4) POP3:它是和SMTP对应,POP3用于接收邮件。pop3协议所用的是110端口。 (5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。默认端口:80 
UDP对应的协议: 
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。 (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。 
(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

10.代码题:一个数组里面多个元素和等于target的答案数(多个元素可以不连续)

/*
struct ListNode {  
int val;  
struct ListNode *next;  
ListNode(int x) :  
val(x), next(NULL) {  
}
};*/
class Solution {
public:  
ListNode* deleteDuplication(ListNode* pHead)
{  
if( pHead == NULL ) return pHead;
ListNode *pre = NULL; //指向前面最晚访问过的不重复结点  
ListNode *p = pHead; //指向当前处理的结点  
ListNode *q = NULL; //指向当前处理结点后面结点

while( p != NULL )  
{ //当前结点p,(其实是p指向当前结点),与它下一个结点p->next的val相同,说明要删掉有这个val的所有结点  
if( p->next != NULL && p->next->val == p->val )  
{  
q = p->next;
//找到q,它指向最后一个与p val相同的结点,那p 到 q (包含) 都是要删除的  
while( q != NULL && q->next != NULL && q->next->val == p->val )  
{  
q = q->next;  
}
//如果p指向链表中第一个元素,p -> ... -> q ->... , 要删除p到q, 将指向链表第一个元素的指针pHead指向q->next。  
if( p == pHead )  
{  
pHead = q->next;  
}  
else
//如果p不指向链表中第一个元素,pre -> p ->...->q ->... ,要删除p到q,即pre->next = q->next  
{  
pre->next = q->next;  
} //当前处理的p要向链表尾部移动  
p = q->next;  
}  
else  
{  
pre = p;  
p = p->next;  
}  
}  
return pHead;}
};

字节跳动 C++面经总结第四期相关推荐

  1. 正式加入字节跳动!突围金三银四面试季!Java面试题及解析

    前言 这些算法,都是小编一点一点看的大佬们的方法,自己积累的. 如果有什么描述的不对的地方还望大佬赐教 多交流才能进步,加油,冲冲冲!!! 1.1. 操作系统简介 我通过以下四点介绍什么是操作系统: ...

  2. 632页,我熬夜读完这份“高分宝典”,竟4面拿下字节跳动offer

    以下干货,认真看完,受益颇多. 前言 怎样的契机? 实际上,目前毕业已经两年时间了,在大学时就已经开始关注字节跳动的发展.一开始,我是电气自动化专业的,大二清楚目标之后就转计算机了,大四进了一家小型的 ...

  3. 632页!我熬夜读完这份“高分宝典”,竟4面拿下字节跳动offer

    以下干货,认真看完,受益颇多.关注我,添加小助手VX:MXX-0474QAQ     Q群:759563652   即可领取学习资料 前言 怎样的契机? 实际上,目前毕业已经两年时间了,在大学时就已经 ...

  4. 什么神仙操作?字节跳动年轻技术官发表“高分宝典”,GitHub已上热门

    分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的 ...

  5. 【字节跳动实习面经(测试开发岗 一面)四个字:破涕为笑】

    字节跳动实习面经(测试开发岗 一面) 至于在今年秋招那么严峻的情况下,我一个双非本科还能免笔试直接进入面试环节,我其实也是糊里糊涂的.故事是这么来的,小明在BOSS直聘上投简历,然后一个陌生的HR找到 ...

  6. 字节跳动,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢...

    写在开篇 去年的秋招对于我来说,那是非常的不顺利,所以今年的春招其实我也没有抱太大的希望,令我惊讶的是第一家给我面试机会的公司竟然是宇宙条.一开始接到面试通知时,心情特别复杂,紧张又兴奋,字节跳动是出 ...

  7. 秋招总结——字节跳动,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢

    写在开篇 和往年相比,今年的春招看上去不是那么顺利,多少都受疫情有所影响,但是令我惊讶的是第一家给我面试机会的公司竟然是宇宙条.一开始接到面试通知时,心情特别复杂,紧张又兴奋,字节跳动是出了名的考算法 ...

  8. 大学四年,因为这些网站,他顺利拿下字节跳动的offer!

    回想起大学的日子,我不免觉得有些羞愧,因为我把它虚度了,除了谈了个女朋友,几乎一无所获,我是个彻彻底底的学渣.但我有一个读者,小王,他就是最佳的励志典范,大一还挂科了三门,但大二的时候突然奋发图强,毕 ...

  9. 字节跳动联合四机构推出“DOU知计划” 13名两院院士加入顾问团

    [TechWeb]3月21日消息,今日字节跳动联合中国科学院科学传播局.中国科学技术协会科普部.中国科学报社.中国科技馆推出名为"DOU知计划"的全民短视频科普行动,通过发布科普短 ...

最新文章

  1. 贝塞尔曲线与CAShapeLayer的关系以及Stroke动画
  2. 上海python培训比较好的机构-上海python培训机构哪个好?
  3. vs2013缺少Mvc 怎么办?
  4. foreach形式的for语句
  5. 数据库 ogm_带有Hibernate OGM的NoSQL –第二部分:查询数据
  6. 【Kaggle】Intermediate Machine Learning(XGBoost + Data Leakage)
  7. JavaMail回复
  8. Unity调用动态链接库dll和so
  9. 人群与网络:万维网结构、链接分析与网络搜索
  10. ASP.NET Aries JSAPI 文档说明:AR.DataGrid
  11. C++对结构体按照某一项元素进行排序
  12. 【测试】26.用户需求规格跟踪矩阵
  13. 中棉所建议国家扶持棉花产业
  14. 树莓派Raspberry Pico RP2040 开发环境配置完全缝合终极版C-SDK
  15. C语言实现三子棋游戏(规范化)
  16. 什么是嵌入式视觉?ARM处理器打造嵌入式视觉硬件
  17. NR DCI Format介绍
  18. 【AI基础】AUC/ROC指标
  19. 【web前端特效源码】使用HTML5+CSS3制作一个会动的音频loading加载动画效果~~适合初学者~超简单~ |前端开发|IT编程
  20. 【详解一】Nand Flash 编写驱动之前要了解的知识

热门文章

  1. 索尼计算机bios正确设置,索尼笔记本电脑怎么进入Bios,小编教你如何四步完成
  2. 记一次java实现excel导出
  3. Jvm元空间存哪些数据
  4. matlab2013a编译器,如何MATLAB2013a在win8-64位系统上能装mex编译器
  5. 蓝牙BQB认证的过程与方式(SIG)
  6. 【人工智能】人脸识别系统【实验报告与全部代码】(QDU)
  7. 用pandas读写HDF5文件
  8. android app上传
  9. 小知识------SATA
  10. 计算机重装系统后无法连接网络连接,电脑用一键重装后不能连宽带解决方法