校招面试
文章平均质量分 62
HUST_Miao
这个作者很懒,什么都没留下…
展开
-
远景面试题目
1、介绍一个C/C++项目2、项目中遇到的问题3、堆和栈的区别4、指针和引用的区别5、介绍一下STL容器6、介绍一下map7、说一下红黑树的特点8、说一下C/C++怎样避免死锁C++特点堆和栈死锁红黑树容器实现...原创 2021-03-07 11:53:41 · 1017 阅读 · 0 评论 -
Maximum Subarray(最大子序列和)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。1.思路:初始化dp[0] = nums[0],dp[i] = max{dp[i] + nums[i] , nums[i]}, max(dp[i]...原创 2018-09-13 15:02:39 · 1898 阅读 · 0 评论 -
二叉树各种遍历操作
目录1 求二叉树深度1.1 递归实现1.2 非递归实现(队列)1.3 非递归实现(栈)2 求二叉树高度 3 二叉树先序遍历3.1 递归版本3.2 非递归版本3.3 利用先序创建二叉树 4 二叉树中序遍历4.1 递归版本4.2 非递归版本5 二叉树后序遍历5.1 递归版本5.2 非递归版本6 二叉树层序遍历7 二叉树深度优先遍历...原创 2018-09-07 10:08:45 · 1053 阅读 · 0 评论 -
线程和进程的各自特点和区别
进程进程是具有一定功能的程序在一个数据集合上的运行过程,它是系统进行资源分配和调度管理的一个可并发执行的基本单位。是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。进程的基本特性 a、动态性:进程的实质是程序的一次执行过程,它由系统创建而产生,能够被调度而执行,因申请的共享资源被其他进程占用而暂停,完成任务后被撤销。动态性是进程最重要的特性。 ...原创 2018-09-06 10:07:34 · 3382 阅读 · 0 评论 -
查找连续最长子串,该子串中任何两个字符不能相同,返回子串长度
对于找子字符串问题,有一个通用的方法,尽管有时候可能复杂度比较高,在想不出更好的算法时不失为一种可行的方法。那就是遍历所有的子串。遍历子串的方法,就要用到字符串后缀子串和前缀子串,下面我先简单介绍一下字符串的后缀前缀子串数组。以字符串abcde为例,后缀子串有5种,5为字符串长度后缀子串 长度 e 1 de 2 cde 3 bcde 4 a...原创 2018-08-24 11:08:41 · 354 阅读 · 0 评论 -
二叉树先序遍历
下面是leetcode上的一道题,先序遍历二叉树。Given a binary tree, return the preorder traversal of its nodes' values.For example:Given binary tree{1,#,2,3}, 1 \ 2 / 3 return[1,2,3].Note: ...原创 2018-08-21 10:48:12 · 352 阅读 · 0 评论 -
二叉树遍历——深度优先(DFS)与广度优先(BFS)
二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止。然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点为止。广度优先遍历:从根节点出发,在横向遍历二叉树层段节点的基础上纵向遍历二叉树的层次。DFS实现:数据结构:栈父节点入栈,父节点出栈,先右子节点入栈,后左子节点入栈。递归遍历全部节...原创 2018-08-20 22:22:27 · 4592 阅读 · 0 评论 -
常用排序算法详细总结
排序算法总结常用排序算法(一) 插入排序、希尔排序、冒泡排序常用排序算法(二) 选择排序、快速排序常用排序算法(三) 归并排序、堆排序、基数排序 ...原创 2018-08-17 08:18:53 · 809 阅读 · 0 评论 -
linux线程间同步(通信)的几种方法——互斥锁、条件变量、信号量、读写锁
Linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量、信号量和读写锁。 下面是思维导图: 一、互斥锁(mutex) 锁机制是同一时刻只允许一个线程执行一个关键部分的代码。1 . 初始化锁int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutex_attr_t *mutexattr);其...转载 2018-08-22 15:12:03 · 1235 阅读 · 0 评论 -
DMA
DMA(Direct Memory Access,直接内存存取)DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能 嵌入式系统算法和网络是很重要的。DMA...转载 2018-08-13 19:17:02 · 5568 阅读 · 0 评论 -
I2C总线传输协议
简介I2C(Inter-integrated Circuit)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100kHz、7-bit标准地址。1992年,I2C的第一个公共规范发行,增加了400kHz的快速模式以及10-bit扩展地址。在I2C的基础上,1995年Inte...转载 2018-08-13 17:37:29 · 562 阅读 · 0 评论 -
STM32之串口通信
串口通信原理 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根...转载 2018-08-13 16:34:11 · 10418 阅读 · 1 评论 -
常用排序算法(三)归并排序、堆排序、基数排序
常用排序算法(一)插入排序、希尔排序、冒泡排序常用排序算法(二)选择排序、快速排序归并排序1. 基本思想:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。首先考虑下如何将2个有序数列合并。这个非常简单,只要从比较2个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即...原创 2018-08-15 23:36:24 · 1055 阅读 · 0 评论 -
SPI接口——基于STM32
SPI接口——基于STM32一、SPI协议【SerialPeripheral Interface】 串行外围设备接口,是一种高速全双工的通信总线。在ADC/LCD等与MCU间通信。1、SPI信号线 SPI 包含 4 条总线,SPI 总线包含 4 条总线,分别为SS 、SCK、MOSI、MISO。(1)SS(SlaveSelect):片选信号线,当有多...转载 2018-08-13 15:49:52 · 31876 阅读 · 0 评论 -
C/C++程序编译的四个过程
g++是Linux下C++的编译器;我为什么会选择Linux下的g++编译器,就是因为g++可以看到程序从编译到运行的过程做了些什么。而VS等集成开发环境看不到这些,并不是说VS工具不好,(VS还是相当好用的...)。对于学习来说,需要知道程序从编译到运行进行了哪些工作,做了哪些事情,首推g++编译器(这个看个人习惯)。一、常见文件后缀 .c为后缀的文件:c语言源代码文件 ...转载 2018-08-13 15:24:31 · 9795 阅读 · 0 评论 -
C/C++内存分配管理
内存分配及管理1.内存分配方式在C++中内存分为5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。堆:堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于...原创 2018-08-13 14:57:23 · 17916 阅读 · 1 评论 -
C/C++面经总结
1.用#define声明一个常数,表明1年中有多少秒(忽略闰年问题)?答案:#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL要点:A.没有以分号结束;B.懂得预处理器将为你计算常数表达式的值。即60 * 60 * 24 * 365而不是31536000.C.考虑到了16位机将会溢出,巧妙运用了UL。 2.写一个“标准”宏MI...原创 2018-08-15 19:38:56 · 8811 阅读 · 0 评论 -
常用排序算法(二)选择排序、快速排序
常用排序算法(一)插入排序、希尔排序、冒泡排序常用排序算法(三)归并排序、堆排序、基数排序1 选择排序 选择排序也是一种简单直观的排序算法。它的工作原理很容易理解:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。算法平均时间复杂度O(n2)。...原创 2018-08-13 10:53:36 · 2866 阅读 · 0 评论