字节跳动服务端开发秋招一面
自我介绍
毕业院校、项目经历、实习工作经历,简单介绍掌握的技能。
算法题
给定二叉树中指定节点和一个整数k,寻找距离指定节点距离为k的所有节点:
要求:时间复杂度 $O(n)$, 空间复杂度 $O(n)$
思路:如果给定节点为父结点,寻找距离其为 k 的节点可以...
毕业院校、项目经历、实习工作经历,简单介绍掌握的技能。
给定二叉树中指定节点和一个整数k,寻找距离指定节点距离为k的所有节点:
要求:时间复杂度 $O(n)$, 空间复杂度 $O(n)$
思路:如果给定节点为父结点,寻找距离其为 k 的节点可以...
毕业院校、项目经历、实习工作经历,简单介绍掌握的技能。
实现一个前缀树,包括三种操作,插入单词、查询单词、查询前缀,自定义数据结构和方法,其中插入单词只包含小写字母,可以定义一个树结构,度为26
毕业院校、项目经历、实习工作经历,简单介绍掌握的技能。
将多个有序链表合并为一个有序链表;
询问了经典的排序算法;
改进:要求运行时间复杂度 $O(n\cdot log n)$,使用堆排序;
如果在程序中使用new从堆(自由存储区)分配内存,等到不再需要时,应使用delete将其释放。C++引入了智能指针auto_ptr,以帮助自动完成这个过程。随后的编程体验(尤其是使用STL是)表明,需要有更加精致的机制。基于程序员的编程体验和BOOST库提供的解决方案,C++11摒弃了auto_ptr,并新增了三种智能指针:unique_ptr, shared_ptr和weak_ptr...
AES128-CTR方式,属于对称加密的一种,之前的博客里有讲过加密的过程。
使用OpenSSL实现的示例代码:
#include
Read More
C++内存管理
内存管理在C++中无处不在,内存泄漏更是每个C++程序中经常发生的错误,因此想要熟练掌握C++,内存管理是首先需要掌握的。
1. C++内存管理详解
在C++中,内存分为5个区域,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区
- 堆,由
Read More
堆排序详解
堆一般是指二叉堆,可以将一个堆看作是完全二叉树或者近似完全二叉树。
一、堆的相关概念
堆是一棵完全二叉树,每个节点的值都小于或等于其子节点的值,位小顶堆;反之位大顶堆。
一般用数组来表示堆,下标为 $i$ 的节点的父节点下标为 $\frac{(i-1)}{2}$ ,其左右子节点分别为 $(2i+1)$、$(2...
Read More
Ubuntu20.04 Intel SGX环境配置