自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Garen的博客

记录一些学习所得所思

  • 博客(25)
  • 收藏
  • 关注

原创 《编程之美》做题笔记

1 中国围棋将帅问题1.1 主要思路使用一个字节,自然想到利用字符变量来存储数据。要保存A、B两个棋盘的信息,可将字符变量拆分为前后两个4bit数据,分开进行读写。将每个位置分别使用1-9表示,如下所示:1.2 实现代码#include<stdio.h>/* * 读取字符b左四位数值(b右移四位即可) */#define LGET(b) (b >> 4) /* * 将b左四位数值设置为n * 先将b左四位清零,再和n右移四位后的值进行或运算赋值 */#

2021-04-26 21:03:27 200

原创 函数式编程初窥

分享几个比较好的总结归纳什么是函数式编程思维?函数式编程初探什么是函数式编程思维? - 用心阁的回答 - 知乎

2021-01-10 14:01:07 166

原创 C++基础知识归纳(4)-杂记+补充

一些小知识点输出数组内容a[1]=*(a+1)=*(1+a)=1[a]cout<<1[a];//也可以堆的大小是没有限制的,而栈有,一般为8MB,因此不宜在线程中嵌套太深的函数或太大的局部变量。结构体变量占用的内存并不是各部分相加,而是必须是其中最大数据类型的整数倍,目的是为地址对齐,提高读写速度。C++中使用多态时,不要使用派生类给父类初始化,否则会导致对象切断。每个派生类都调用自己直接基类的构造函数,但最终派生类的构造函数负责调用虚基类的构造函数,可以不是直接基类!(一

2021-01-09 16:20:49 422

原创 C++基础知识归纳(2)-进阶篇

2021-01-09 13:27:43 1117

原创 百度一、二、三面面经(C++/PHP后台开发,校招第一批)

应该是百度正式批第一批吧,一下午面完的。9.12 下午 2:00 一面,52分钟;一面面试官是个人美声甜的小姐姐,爱了爱了。做了三道题,都是烂大街的算法题,秒杀:跳台阶的题,每次跳一步或两步,有n级台阶,有多少种跳法?给一个字符串,找出最长不重复子串?给一个n*m的矩阵,0表示是水,1表示是陆地,求整个空间内有几块分离的岛屿?另外还简单问了点项目的内容,下面主要分享一些基础知识方面的问题:cookie和session的区别?session是存在服务器的什么地方,怎么存储的?red.

2021-01-09 11:33:29 751

原创 C++基础知识归纳(3) -进阶篇《Effective C++必懂条款》

析构函数需要设置为虚函数(virtual)的原因带多态性性质的base class应该声明一个virtual虚构函数。否则使 指针指向派生类时使用delete操作只会删除基类成员而不会删除派生对象中的成员从而造成内存泄露。如果类不是作为基类使用或者不是为了具备多态性,就不应该声明virtual析构函数。每个析构函数只会清理自己的成员(成员函数前没有virtual)。可能是基类的指针指向派生类的对象,当析构一个指向派生类的成员的基类指针,这时程序不知道这么办,可能会造成内存的泄露,因此此时基类的析构函

2021-01-08 21:41:55 942

原创 C++基础知识归纳(1)-大厂必备八股文篇

共享数据的保护:常引用:使所引用的形参不能被更新void display(const double& a);常对象:在生存期内不能被更新,但必须被初始化A const a(3,4);常成员函数:不能修改对象中数据成员,也不能调用类中没有被const 修饰的成员函数(常对象唯一的对外接口).如果声明了一个常对象,则该对象只能调用他的常函数!->可以用于对重载函数的区分;void print();void print() const;extern int a:使其他文件也能访问该

2021-01-08 20:07:21 26729 3

原创 C++11多线程编程常用特性使用案例

记录C++11多线程开发的一些特性的使用。本文以使用源码的形式呈现,各个特性的使用在每个相关函数中说明。#pragma once#include<iostream>#include<thread>#include<mutex>#include<queue>#include<future>#include<vector>#include<atomic>//<<1<基础的lock_guard

2021-01-08 19:30:05 269

原创 《深度探索C++对象模型》重点章节摘录

1.首先介绍一下几种对象模型,也就是对象在内存中的存在形式简单对象模型(A Simple Object Model)在Object中不存储任何直接的data member 或 function member, object中存储的都是指针,这个指针指向members。 这就是简单对象模型,对于此模型,可以避免诸如“不同的数据类型,需要不同的的存储空间”这一类的问题。表格驱动对象模型(A Table-driven Object Model)在object中,只存在两个指针,一个指向memb

2021-01-08 13:58:33 214

原创 B站(BiliBili)一面面经(服务端开发工程师,主站技术中心)

9.11号面试的,没做题,简单问了点项目,但基础知识问的特别细特别广,下面分享一些印象较为深刻的问题:1.redis的缓存删除策略了解吗?2.使用LRU时,如果短时间内会出现大量只会使用一次的数据,可能导致之前大量高频使用的缓存被删除,请问有什么解决办法?3.redis怎么实现的定期删除?4.了解过循环链表吗?他的长度怎么计算?5.mysql中使用的锁有哪些?什么时候使用行锁,什么时候会使用表锁?6.了解过间隙锁吗?间隙锁的加锁范围是怎么确定的?7.红黑树了解吗?红黑树删除数据的时候是怎么调整

2021-01-08 13:41:06 1143 1

原创 字节跳动一、二、三面面经(后台开发,广告部)

字节广告部,9.17一面,9.18二面;基础知识问题:1.tcp和udp的区别是什么?哪些场景下会使用udp?2.select的缺陷有哪些?epoll的优势是什么?3.为什么要使用缓存? 缓存的更新策略有哪些?怎么进行选择?4.如果更新db成功但是更新缓存失败引发数据不一致,怎么解决?5.redis的缓存穿透怎么解决?redis缓存雪崩了怎么办?有哪些具体的策略?6.redis的缓存删除策略有哪些?你知道哪些变种的LRU方案,简单讲讲?7.TCP是怎么保障数据的顺序?8.为什么TCP握手要

2021-01-08 13:40:23 1262 1

原创 字节跳动一、二面面经(后台开发)

面的是一个做推荐相关的部门,具体名字忘了;一二面连一块面完的,每面都在50分钟左右。一面呢,主要围绕我的简历上的项目展开,一个是我的课余实践项目-简易的高性能网络通信引擎,另一个是我的实习项目-一个高并发环境下的本地cache。面试官提的问题很细,挖的比较深,感觉真的听的很认真!另外还做了两个代码题,基础知识基本没问。两道代码题如下:第一题要求完成两个需求:1.可以在外部控制run的运行和终止;2.每次执行stop函数可以立即将程序终止,无需休眠,实现完美退出;第一个比较简单,第二个呢,我说可以

2021-01-07 16:39:56 4221

原创 美团一、二面面经(后台开发,快驴)

**9.8一站面完,4:00一面,7:00 HR面。 **做了一个SQL题,涉及多表操作,以及一个多生产者多消费者的并发编程题,写完了大概讲了下设计思路就完了。下面分享一、二面过程中遇到的一些基础问题,不区分顺序(主要就是一面问的,二面主要在聊项目和实习感受啥的):1.HTTP请求的完整过程?DNS解析的过程能展开谈一下吗?2.死锁产生的原因?有哪些解决办法?3.队列和栈的区别?在系统中有哪些应用?4.进程间通信的方式有哪些?5.了解分布式锁吗?怎么实现的?6.redis的缓存更新策略简单讲

2021-01-07 16:38:45 704

原创 秋招复习(1) - 重要数据结构和算法的代码实现

1.堆排序基本思路父节点在数组里的序号为i,则两个子节点分别为2 * i + 1 和 2 * i + 1,利用这种方式将整个数组模拟成了一个二叉树。先对整个数组建堆,完成之后数组第一个元素nums[0]就是最大/最小,然后将其交换到数组nums[size-1],在对前size-1的数组元素建堆,再把nums[0]交换到nums[size-2]。重复这个过程,即可完成对整个数组的排序。时间复杂度O(nlogn).代码实现://用户交换堆顶元素到数组末尾void Swap(int& a, in

2021-01-07 16:37:40 325

原创 腾讯一、二面面经(后台开发,CSIG)

面的是CSIG。从百度实习离职(8.25)后面的第一家大厂,同时也应该是腾讯提前批的最后一波机会吧,挂了基本就没机会了。**8.25 一面;9.2 二面;9.8 HR面,求好运 **一面80分钟,二面40分钟,主要时间都是在聊我的项目(四个),大概率是因为我把春招简历上的项目和实习期间做的一些工作都写在了简历上吧。**下面主要分享一些一二面跟项目关系不大的的问题: **1.描述一下https请求的整个过程?2.你熟悉哪些排序算法?你研究过哪些更适合在链表排序中使用吗?3.你知道哪些查

2021-01-07 16:36:28 1469

原创 二叉树高频成员函数实现(优化版,C++)

部分成员函数节点结构struct Node { char val; Node* left; Node* right; Node(char ch) { val = ch; left = right = nullptr; }};先序+中序创建二叉树 //根据先序遍历和中序遍历进行创建二叉树 void PreOrderCreate() { string preorder; string midorder; // cout << "please input pr

2021-01-07 16:32:53 119

原创 京东一、二面面经(C++后台开发,广告部)

4.23京东一面,4.27京东二面,算法题都是面试官临时粘贴到面试房间的,不记得完整的题目了,这里只记录了基础知识方面的面经。面经:1.redis怎么实现原子操作?2.内存中一块数据要进行更新操作,同时有很多线程要对他进行访问,怎么保障高性能?3.你在linux下开发怎么调试程序,GDB用的多吗?4.boost库用过哪些?智能指针的原理了解吗?说说C++11的一些特性?5.redis有哪些数据类型?你还知道哪些数据库?6.怎么避免内存泄漏,说说你知道的方法?7.进程和线程的区别,为什么线程切

2021-01-07 16:31:34 463

原创 美团一、二、三面面经(java后台开发,小象事业部)

我简历上写的就业方向是C++后台开发,但捞我的部门是做java开发的,面试官确认我同意转语言就没纠结这个(当然没问和java直接相关的问题)。从4.2笔试到4.23完成HR面,目前生死未卜。下面回忆整理了一下一些印象较深的问题,供大家参考。基础知识:1.介绍下平衡二叉树?为什么实际中红黑树用的多而不是平衡二叉树?2.进程间通信方式哪些?消息队列你用过吗?3.cookie和session区别?4.数据库的四种隔离级别?5.什么是事物,事物的四个特性?6.redis用过吗?有哪几种数据结构?什么是

2021-01-07 16:30:26 305

原创 百度一、二、三面面经(C++后台开发,搜索架构部)

一二面都没怎么详细问我问我项目问题,但手撕代码比较多,加起来总共8道,这里根据回忆做一个汇总,忽略问题的具体顺序一、二面基础知识:1.TCP四次挥手中time_wait作用是什么?去掉这个过程会有哪些后果?2.虚函数的实现机制?3.vector,queue的底层数据结构是什么?循环链表有什么好处?4.详细讲讲平衡二叉树?和红黑树的具体差异?5.知道哪些排序算法?给我详细讲讲快速排序和堆排序的实现原理和过程?6.给我详细介绍下TCP特性?7.你知道哪些mysql引擎?详细讲讲innodb和m

2021-01-07 16:29:28 1029

原创 有向图的表示、存储及DFS/BFS实现(C++)--丰富注释+功能完整版

1 基本概念1.1 图的定义图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G=(V,E)其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。注:在线性表中,元素个数可以为零,称为空表;在树中,结点个数可以为零,称为空树;在图中,顶点个数不能为零,但可以没有边。1.2 图的存储结构考虑图的定义,图是由顶点和边组成的,分别考虑如何存储顶点、如何存储边。1.2.1 邻接矩阵存储(数组表示法)基本思想:用一个一维数组存储图中顶点的信息,用一个二维数组(称为邻接

2021-01-07 16:26:38 2885

原创 哈夫曼树(Huffman树)原理分析及实现(C++)

1 构造原理假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:  (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);  (2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;  (3)从森林中删除选取的两棵树,并将新树加入森林;  (4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。显然对n个权值,构造哈夫曼

2021-01-07 16:24:19 3160 4

原创 二叉树成员函数代码实现及原理解析PLUS(C++)

为求方便节点存储数据类型默认为char,未以模板形式实现完整代码请在此查看1 节点结构struct BNode { char data; BNode *lChild, *rChild; BNode(char a) { data = a; }};2 二叉树的创建2.1.使用带终止符的前序遍历创建必须对应二又树结点前序遍历的顺序,并约定以输入序列中不可能出现的值作 为空结点...

2019-11-29 15:04:34 495

原创 二叉树完整实现代码(C++)

为求方便节点存储数据类型默认为char,未以模板形式实现#pragma once#include<iostream>#include<Stack>#include<Queue>using namespace std;//static int No=0;struct BNode { char data; BNode *lChild, *rChil...

2019-11-29 15:02:36 3201

原创 二叉排序树 成员函数实现详解(C++)

1 相关概念1.1 定义一棵空树,或者是具有下列性质的二叉树:若左子树不空,则左子树上所有结点的值均小于它的根结点的值;若右子树不空,则右子树上所有结点的值均大于它的根结点的值;左、右子树也分别为二叉排序树;没有键值相等的结点。1.2 性质对二叉树进行中序遍历,可以得到一个递增的有序序列。插入的新结点一定是某个叶子结点。2 二叉排序树的实现2.1 结点结构stru...

2019-11-29 14:59:42 807

原创 平衡二叉树(AVL)原理解析与实现(C++)

1. 简介1.1 定义平衡二叉查找树:简称平衡二叉树。在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是O(logn)。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL 树得名于它的发明者 G. M. Adelson-Velsky...

2019-11-29 14:56:48 683

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除