
面试
文章平均质量分 52
面试相关编程题,基础知识分享
CrazyFox%
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划核心算法题(c++)
1. 0-1背包0-1背包升级版2. 三角形中最短路径leetcode题目链接原创 2021-08-12 10:11:43 · 133 阅读 · 0 评论 -
回溯算法题目总结(c++)
1. 八皇后2. 0-1背包可以使用回溯,虽然不是最好的解决办法2.2 0-1背包改造版3. 正则表达式4. 深度优先搜索5. 图的着色6. 旅行商问题7. 数独8. 全排列原创 2021-08-11 16:40:36 · 385 阅读 · 0 评论 -
c++手写string类
string类是带指针的类,所以一些基础函数的定义要特别注意,很考验功底0. 类声明含数据成员1. 普通构造函数2. 拷贝构造函数3. 拷贝赋值运算符4. 析构函数5. 移动构造函数6. 移动赋值运算符...原创 2021-08-11 15:16:17 · 1574 阅读 · 0 评论 -
分治算法总结(c++)
0. 算法总结分治算法用四个字概括就是“分而治之”,将原问题划分成 n 个规模较小而结构与原问题相似的子问题,递归地解决这些子问题,然后再合并其结果,就得到原问题的解。1. 逆序度求解leetcode题目2.二维平面上有 n 个点,如何快速计算出两个距离最近的点对?3.有两个 n*n 的矩阵 A,B,如何快速求解两个矩阵的乘积 C=A*B?...原创 2021-08-10 17:22:58 · 512 阅读 · 0 评论 -
c++输入输出总结
1. 输入: 1 2 3 4 5#include <bits/stdc++.h>using namespace std;int main() { // 输入:1 2 3 4 5 string item; while (cin >> item) { cout << item << " "; if (getchar() == '\n') break; } return 0;}原创 2021-08-06 18:35:32 · 395 阅读 · 0 评论 -
字符串匹配算法(leetcode)
一. 基本题目leetcode 28 easy1. BF算法(暴力匹配)class Solution {public: int strStr(string haystack, string needle) { // 0.异常处理 if (0 == needle.size()) return 0; // 1.初始化准备 int m = haystack.size(); int n = needle.size原创 2021-08-06 10:58:43 · 759 阅读 · 0 评论 -
贪心算法leetcode重点题目
1. 分饼干leetcode 455 easy思路:每次优先满足胃口最小的孩子(因为目的是尽量满足越多的孩子,只和数量有关);而且在满足孩子胃口的前提下,尽量用尺寸最小的饼干(因为结果相同)具体实现:每次都有找最小值,可以使用优先队列,注意是小顶堆(需要更改比较函数)class Solution {public: int findContentChildren(vector<int>& g, vector<int>& s) {原创 2021-08-06 10:23:51 · 97 阅读 · 0 评论 -
huffman(霍夫曼编码)
1. 基本思想按照字符出现的频率编码,比如有3个字符,就可以用2个比特来表示,不过随着字符数量的增加,比特数也会增加,有可能会浪费空间,所以进一步用更少的比特表示频率更高的字符,用更多的比特表示频率更低的字符,但是这样会有一个问题是再解码时不知道到底要对多少个字符进行解码,所以进一步引出霍夫曼编码,通过构建二叉树,从频率最小的字符开始,结点值为字符出现的频率,先将所有频率对应一个结点放入队列中,每次取出最小的2个合并,将合并的结点加入队列,重复这个过程,直到队列为空,最终编码的时候左子树编码为0,右子树原创 2021-08-05 16:35:57 · 504 阅读 · 0 评论 -
图核心算法(c++)
1. 图的遍历leetcode207这道题对应拓扑排序,有向图是否有环的问题1.1 BFS(广度优先搜索)第一次做法class Solution {public: bool canFinish(int numCourses, vector<vector<int>>& prerequisites) { // 0.初始化准备 unordered_set<int> temp; vector&原创 2021-08-04 10:45:07 · 292 阅读 · 0 评论 -
堆核心算法(c++)
以数组存放,下标从0开始,大顶堆为例1. 堆化(往堆中插入一个元素)// 大顶堆,数组存放数据,从0开始存放数据class Heap {private: vector<int> data; int count; //堆中已存储的数据个数public: Heap(int capacity) : data(vector<int>(capacity)), count(0) { } void insert(int in) { .原创 2021-08-02 10:50:57 · 257 阅读 · 0 评论 -
二叉树核心算法题(c++)
一、二叉树的遍历1.前序遍历144题/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullpt原创 2021-07-31 19:18:42 · 196 阅读 · 0 评论 -
哈希算法核心算法题(c++)
1. 手写LRU缓存淘汰算法leetcode题目原创 2021-07-30 14:53:17 · 189 阅读 · 0 评论 -
二分查找核心算法(c++)
1. 基本原理1.1 循环实现/** * @brief 循环实现二分查找 * @param nums 数据 * @param target 查找目标 * @return 找到目标则返回下标,否则返回-1 */int BSearch(const vector<int> &nums, int target) { int low = 0; int high = nums.size() - 1; while (low <= high)原创 2021-07-28 15:03:53 · 294 阅读 · 0 评论 -
排序核心算法(c++)
一、平均时间复杂度为O(n^2)的算法1. 冒泡排序void BubbleSort(vector<int> &data) { // 1 辅助变量 bool flag; //若某一次循环不需要交换说明已经完全有序,提前结束 int tmp; // 2 正式排序 for (int i=1; i<data.size(); ++i) { flag = true; for (int j=0; j<data原创 2021-07-23 15:19:02 · 361 阅读 · 0 评论 -
递归核心算法题(c++)
1. 链表两数相加https://leetcode-cn.com/problems/add-two-numbers/思路:可以将大问题分解为子问题,子问题和大问题逻辑相同只是规模不同, 存在终止条件,也就是当前结点都为空且进位为0时, 可以使用递归终止条件:当前结点都为空且进位为0时递推公式:int new_val = (val1 + val2 + carry) % 10;carry = (val1 + val2 + carry) / 10;ListNode* curr = new原创 2021-07-22 17:18:02 · 284 阅读 · 0 评论 -
联发科图像处理面试准备
联发科面试准备1、小波变换1.1 傅里叶变换1.2 短时傅里叶变换1.3 小波变换2、双目立体标定2.1 单目相机标定2.1.1 原理2.1.2 实现过程2.2 双目相机标定2.2.1 基本过程2.2.2 立体矫正1、小波变换1.1 傅里叶变换傅里叶变换处理非平稳信号有缺陷,它只能获取一段信号总体上包含哪些频率成分,但是无法获取各个成分出现的时刻。1.2 短时傅里叶变换为了克服傅里叶变换的缺陷,可以考虑加窗,在窗内的信号可以近似成平稳信号。但是这样的方法也有缺陷,那就是无法确定窗的大小,窗太窄,频原创 2020-10-12 22:46:11 · 499 阅读 · 0 评论 -
队列核心算法(c++)
1. 用两个栈实现队列https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/思路:进队由第一个栈控制, 出栈时由第二个栈控制,若出栈时第二个栈为空则将第一个栈元素转移过来,若两个都为空则返回-1class CQueue {private: stack<int> stk1; stack<int> stk2;public: CQueue() {原创 2021-07-22 15:31:58 · 106 阅读 · 0 评论 -
栈-核心基础算法题总结(c++)
目录1. 有效的括号2. 最小栈3. 回文链表1. 有效的括号https://leetcode-cn.com/problems/valid-parentheses/思路:栈, 左括号进,右括号出class Solution {public: bool isValid(string s) { // 1.初始化准备 stack<char> stk; unordered_map<char, char>.原创 2021-07-19 11:24:09 · 191 阅读 · 1 评论 -
链表核心算法-c++程序
1. 反转链表1.1 版本1/** * @file main.cpp * @author Crazyfox * @brief 反转链表 * @version 1.0 * @history * 1.Date: 2021-07-15 * Version: 1.0 * Modification: First release * @copyright Copyright (c) 2021 * */#include <iostream>#includ原创 2021-07-15 20:46:20 · 119 阅读 · 0 评论 -
c语言或c++读取一组数字/输入创建链表/遍历打印链表/
一 c语言实现/** * @file CreateList.cpp * @author Crazyfox * @brief c语言实现链表创建 * @version 1.0 * @history * 1.Date: 2021-07-15 * Version: 1.0 * Modification: First release * @copyright Copyright (c) 2021 * */#include <stdio.h>#inclu原创 2021-07-15 19:51:10 · 775 阅读 · 0 评论 -
C++面试准备汇总
1、多态、虚函数原理、纯虚函数、析构函数可以使用虚函数吗?答:(1)分为编译时多态(编译时就确定),比如函数重载就是这种情况,通过参数类型或数量不同可以实现;还有运行时多态(运行时才确定),使用虚函数机制,可以通过父类指针来调用派生类的函数,(2)具体实现机制是每个对象存在一个虚函数表,调用函数时会通过这个虚函数表去查询具体需要调用哪个版本的函数;(3)纯虚函数是指基类没有提供函数的定义需要派生类自行实现,普通虚函数时基类存在一个版本的函数(4)对于存在派生关系的类的析构函数应该使用虚函数,因为这原创 2020-09-13 09:26:38 · 1330 阅读 · 0 评论 -
腾讯后台开发面试准备
腾讯后台开发面试准备1 C++面向对象的特性?1 C++面向对象的特性?封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让有权限的类或者对象访问,对没有权限的进行信息隐藏继承:它可以使用现有类的所有功能,并无需重新编写原来的类的情况下对这些功能进行扩展多态:同一个接口,不同的行为...原创 2020-11-05 17:20:51 · 140 阅读 · 0 评论 -
线程同步(多线程)
主要要5中方式:互斥锁、条件变量、信号量、自旋锁、读写锁0 多线程(1)创建线程int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);参数thread为指向线程标识符的地址;attr一般为空start_routine是线程运行函数的地址,填函数名就可以了arg是线程运行函数的参数,该函数只有一个无类型的指针参数arg,若想要向函数原创 2020-09-28 23:38:44 · 100 阅读 · 0 评论 -
socket网络编程基础
服务器与客户端P94-P98先学习基础再学习socket编程1、网络编程基础1.1 socket通信概念socket,也叫套接字,描述了计算机是IP地址和端口,计算机程序之间采用socket进行通信。socket把复杂的TCP/IP协议族隐藏在接口后面,方便使用。1.2 socket套接字tcp提供流和数据报两种通信方式,所以套接字也分为流套接字和数据报套接字流套接字:有序、可靠、双向的,类型是SOCK_STREAM,有错误重传机制(现在用的更多,主要学习)数据报套接字:不需要建立或者维持原创 2020-09-20 14:36:04 · 176 阅读 · 0 评论 -
KMP算法理解与C++代码实现
用途:在主串(长度n)中快速匹配到模式串(长度m)比起暴力法(复杂度O(n*m)),KMP的复杂度可以是O(n+m)关键在于发生不匹配时如何更好地移动子串(暴力法是从初始位置的下一个位置,而KMP利用了匹配子串的)所以问题的关键在于如何求解选取的长度逐渐增加时模式串最长公共前后缀长度(要小于选取长度,因为本身长度的公共前后缀就是本身长度)是多少?参考:https://www.bilibili.com/video/BV1i64y1M7zv?from=search&seid=4229951256原创 2020-09-19 15:11:19 · 200 阅读 · 0 评论 -
深信服一面总结
深信服一面总结1、自我介绍+项目介绍2、问我熟悉的数据结构+编程题3 C++ 11新特性4 share_ptr实现原理5 多态6 new和malloc区别7 怎么杀死一个进程8 gdb调试9 自旋锁和互斥锁10 哈希表的实现、插入删除时会发生什么?11 红黑树和AVL的特点1、自我介绍+项目介绍项目详细展开了下2、问我熟悉的数据结构+编程题然后出了一个队列的编程题,双向链表,在表尾插入一个新的结点答:我刚开始没意识到是双向环形链表,去循环查找表尾了,后来利用双向信息,可以直接定位到表尾,所以问题就原创 2020-09-17 21:17:19 · 265 阅读 · 0 评论 -
测试开发面试总结
2 基础知识2.1 基本语言(一)1、static作用答:(1)修饰全局变量,称为静态全局变量,初始化为0,作用域是从定义开始到文件结尾,声明周期是在整个程序运行期间(2)修饰局部变量,称为静态局部变量,初始化为0,作用域是局部作用域,例如到函数内部定义了一个静态局部变量,那么这个变量的生命周期是该函数第一次调用到程序结束,并且多次调用函数访问的是同一个存储空间(3)修饰普通函数,则该函数只在本文件中有效,因此对于只在该cpp文件使用的全局函数应该在该cpp文件声明,并使用static修饰,对于希原创 2020-08-20 21:56:12 · 520 阅读 · 0 评论