- 博客(94)
- 收藏
- 关注

原创 秋招——测试相关面经
格力现场面 2019.9.18测试自我介绍黑白盒测试回归测试怎么展开四级多少分还面过什么公司结果如何,还面过格力什么职位测试项目讲一下都用过什么测试工具京东现场面 2019.9.18 下午 【测试开发】1hour一面(简历基础知识)自我介绍static用法指针引用区别为什么要有析构函数http中八种请求方法知道哪些get post的区...
2019-10-13 13:13:01
790
1
原创 剑指offer40:最小的k个数
(一)题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。(二)思路分析(三)代码实现//使用c++标准模板库进行实现class Solution {public: vector<int> GetLeastNumbers_Solution (v...
2019-10-13 13:13:56
283
原创 快手客户端开发面经(2019.9.22)
快手 客户端开发 视频面(2019.9.22)一面 45mins自我介绍 c与c++的区别 struct与class的区别 空类为什么占一个字节 new与malloc的区别 线程与进程的区别 进程间通讯方式,线程间同步方式 三次握手,四次挥手 为什么四次挥手而不是三次 tcp如何实现可靠性 计算机五层架构有什么 https为什么安全,https为什么需要证书...
2019-10-13 13:12:48
1346
原创 海量数据处理的相关问题整理
一、海量日志数据,如何提取出某日访问百度次数最多的那个IP?答:分而治之 + hash映射 + 排序算法IP地址最多有2^32=4G种取值情况。可以采用“分而治之”的思想,首先利用哈希方法将所有IP地址对1024取余(ip%1024),得到1024个4MB的IP地址。 对于每个小文件构建一个ip为key,出现次数为value的hash map(ip->key、hash map...
2019-09-21 13:47:54
279
原创 剑指offer65:不用加减乘除做加法
(一)题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。(二)思路分析 首先分析十进制的5+17=22这个结果的。实际上我们可以分成三部执行:第一步只做各位相加不进位,得到12;第二步做进位,得到10;第三步将前面两个结果加起来,得到22. 二进制与十进制的思路相同。5的二进制是00101,17的二进制是1000...
2019-08-13 16:32:12
202
原创 Linux中git的安装和使用
git需要与GitHub配合着使用,Windows下GitHub的详细安装步骤:https://blog.youkuaiyun.com/qq_41782425/article/details/85183250一、linux下git的安装命令 ios镜像网盘链接:https://pan.baidu.com/s/1gSp4QpEsRCnPyqaa5P84SA 提取码:1...
2019-08-06 22:08:18
745
原创 剑指offer30:包含min函数的栈
(一)题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。(二)思路分析 当最小元素被弹出栈的时候,为了得到下一个最小的元素,所以应该保留次小元素。 即定义两个栈,一个数据栈,一个辅助栈。 数据栈存放每次添加的数值;辅助栈存放之前的最小元素与新压入栈元素两者的较小值(三)...
2019-07-31 17:58:09
289
原创 剑指offer33:二叉搜索树的后序遍历序列
(一)题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。(二)思路分析 后序遍历左右根,左子树结点值都比根节点的值小,右子树的值都比根节点的值大,根据递归算法(三)代码实现class Solution {public: bool VerifySq...
2019-07-31 17:54:17
261
原创 剑指offer35:复杂链表的复制
(一)题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)(二)思路分析 把N’复制到N的后面,再把新旧链表分开 第一步:先复制原链表上的每个节点,并用next连接起来 ...
2019-07-31 17:50:28
144
原创 剑指offer38:字符串的排列
(一)题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。(二)思路分析 a.求所有可能出现在第一个位置的字符,第二步是固定第一个字符,求后面所有字符的排列 b.拿第一个字符与它之后的字符逐个交换,典型的递归思路(...
2019-07-31 17:44:58
267
原创 剑指offer39:数组中出现次数超过一半的数字
(一)题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。(二)思路分析 假设在数组中出现的次数超过数组长度一半的数字为a,a出现的次数比其他所有数字出现的次数的和都要多。设用于存储a的整形变量r...
2019-07-31 17:41:50
144
原创 剑指offer50:第一个只出现一次的字符
(一)问题描述 在字符串中找到第一个只出现一次的字符。如“google”中第一个只出现一次的字符是“l”.(二)思路分析 使用哈希表来记录每个字符出现的次数,因为字符char为8位,总共有256个值,所有哈希表有256个元素,其中把字符的ASCII码作为哈希表的键值,而对应键值储存的是该字符出现的次数。那么对给定的字符串进行两次遍历,第一遍收集信息,即统计每个字...
2019-07-31 17:32:44
170
原创 剑指offer18:删除链表的节点(删除指定节点,删除重复节点)
题目一在O(1)时间内删除链表的节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。解决思想法一(不采用):从链表的头结点开始,顺序遍历查找要删除的结点,并在链表中删除该结点,时间复杂度O(n)法二:(1)把待删结点的下一个结点的内容复制到待删结点上,覆盖原有的内容,然后把下一个结点删除,这就相当于把当前需要删除的结点删除了。(2)若删尾结点,由于...
2019-07-31 16:48:05
317
原创 剑指offer17:打印从1到最大的n位数(常规方法,递归方法)
(一)题目描述 输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3,一直到最大的三位数即999.(二)算法分析与代码实现 常规方法:用字符串或数组存储大数,因为数字最大是n位的,所以定义字符串长度为n+1(字符串最后一位是‘\0’),字符串中的每个字符都是‘0’到‘9’之间的某个数字。当实际数字不够n位时,在字符串的前半部分补0。假设...
2019-07-30 20:32:15
376
原创 剑指offer11:旋转数组的最小数字
(一)题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。(二)思路分析 直观的解法:是从头到尾遍历一次数组,找到最小数字,时间复...
2019-07-30 14:09:29
231
原创 剑指offer10:斐波那契数列(递归/非递归)
(一)题目描述题目一:求斐波那契数列的第n项。(二)思路分析求解斐波那契数列有两种常用的算法:递归算法和非递归算法。算法一:递归解法。我们以求解F(10)为例来分析递归的求解过程。想求得F(10),需要先求的F(9)和F(8)。同样,想求得F(9),需要先求得F(8)和F(7)......依次类推,直至必须先计算F(1)和F(0),然后逆推得到F(n-1)和F(n-2)的结果,...
2019-07-30 12:15:37
495
转载 【mysql数据库】数据库事务隔离级别——脏读,不可重复读,幻读
一、脏读、幻读和不可重复读一、脏读、不可重复读、幻读1、脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。例如:张三的工资为5000,事务A中把他的工资改为8000,但事务A尚未提交。与此同时,事务B正在读取张三的工资,读取到张三的工资为8000。随后,事务A发生异常,而回滚了事务...
2019-07-26 20:21:34
384
转载 【mysql数据库】意向锁与哪些锁冲突
加意向锁的目的是为了表明某个事务正在锁定一行或者将要锁定一行。表名加锁的“意图”。要读写,直接加S锁或者X锁就好啦,为什么还要表名这样一个意图呢?意向锁有两种:意向共享锁(IS)表示事务意图在表中的单个行上设置共享锁。 意向排他锁(IX)表明事务意图在表中的单个行上设置独占锁。我们先了解一下意向锁是在什么时候使用的。在一个事务对一张表的某行添加S锁之前,它必须对该表获取一个IS锁...
2019-07-26 19:27:03
2243
6
原创 剑指offer16:数值的整数次方
(一)题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。不得使用库函数,同时不需要考虑大数的问题。(二)思路分析 算法的时间复杂度为O(logn)。通过递归实现,有一个公式:y为偶数时:x^y=x^(2/y) * x^(2/y)... 如:3^32 = (3^16) *(3^16...
2019-07-24 21:32:05
219
原创 剑指offer15:求二进制中1或0的个数
(一)题目描述 请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1.因此,如果输入9,则该函数输出2.(二)思路分析 把一个整数减去1,再和原整数做与&运算,会把该整数最右边的1变为0.那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。(三)代码实现//32位的平台#in...
2019-07-24 21:27:27
312
原创 剑指offer9:用两个栈实现队列
(一)问题描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。(二)思路分析 入队时直接入到栈1,出队时分两种情况:若栈2没有数据则从栈1将数据入到栈2,从栈2出;若栈2有数据则直接从栈2出。(三)代码实现class Solution{public: void push(int node) { ...
2019-07-21 20:54:50
140
原创 剑指offer7:重建二叉树
(一)问题描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的头节点。(二)思路分析 根据先序序列第一个数确定树的根节点,在中序序列中找到这个数所在的位置,此处左边为左子树...
2019-07-21 20:48:26
112
原创 剑指offer6:从尾到头打印单链表
(一)问题描述 输入一个链表的头节点,从尾到头反过来打印出每个节点的值。(二)思路分析 通常打印是一个只读操作,所以不能改变原链表的结构。遍历的顺序是从头到尾,输出的顺序是从尾到头,这是栈“后进先出”的思想。所以我们可以用栈实现。每经过一个节点的时候,把该节点放到一个栈中,当遍历完整个链表后,再从栈顶开始逐个输出节点的值。(三)代码实现#include...
2019-07-21 20:34:35
215
转载 NULL与nullptr的区别
NULL来自C语言,一般由宏定义实现,而nullptr则是C++11的新增关键字。在C语言中,NULL被定义为(void*)0,而在C++语言中,NULL则被定义为整数0。编译器一般对其实际定义如下:#ifdef__cplusplus#defineNULL0#else#defineNULL((void*)0)#endif出现C++和C定义不一致的原因是,在C++中不允...
2019-07-21 17:28:09
437
原创 剑指offer5:替换空格
(一)问题描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。(二)解决思路 原来一个空格字符被'%', '2', '0'三个字符替换后,字符串会变长。这可分为两种情况: 情况一:如果是在原来的字符串进行替换,有可能覆盖原字符串后面的字...
2019-07-21 17:20:01
231
原创 剑指offer4:二维数组中的查找
(一)问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数组7,则返回true;如果查找数字5,则返回false。 ...
2019-07-21 15:30:51
180
原创 程序的编译链接运行原理
程序编译运行过程可以分解为4个步骤:预处理,编译,汇编,链接。Linux下的相关命令:预处理: gcc -E main.c -o main.i编译:gcc -Smain.i -o main.s 汇编: gcc -c main.s-o main.o链接: gcc -o mainmain.o...
2019-07-20 18:29:05
373
原创 【mysql数据库】存储引擎,索引,事务,锁机制,触发器,存储过程
一、存储引擎 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取。MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的。存储引擎进行文件的访问控制,针对于表而存在。不同的表可以使用不同的存储引擎方式。 查看存储引擎的命令:show engines; 热备份:热备份是在数据库运行的情况下,采用archivelo...
2019-07-20 16:25:26
408
原创 【mysql数据库】操作命令及简单的增删改查
SQL是一种结构化查询语言。注:在mysql>命令行中输入命令时结尾都需要加分号“;”一. 启动并打开mysql的基本命令service mysqld start //打开数据库服务器 mysql -u root –p //以管理员方式运行 system clear //清屏 show databases;//列出已存在的数据库 use mysql;...
2019-07-17 18:53:23
338
转载 Linux多线程死锁的调试方法
首先此处给出死锁多线程代码示例,便于理解:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <pthread.h>#include <unistd.h>pthread_mutex_t g_smutex ; void * func(v...
2019-07-16 13:54:42
1774
原创 Unix、Linux、Windows操作系统的区别
1.操作区别linux区分大小写,windows在dos界面命令下不区分大小写;linux所有内容均以文件形式保存包括硬件,用户,而windows文件和硬件没什么关系,两个之间没有关联;windows用扩展名区分文件如.exe代表执行文件,.txt代表文本文件,而linux无扩展名的概念,当然为了管理员区分方便会有部分扩展名如.gz , .bz2 ,.tar.bz2代表压缩包。.h...
2019-07-15 20:55:45
25853
1
转载 计算机编程语言(机器语言,汇编语言,高级语言)
计算机语言:计算机语言通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。计算机语言通常分为三类:即机器语言,汇编语言和高级语言。1. 机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。它是计算机的设计者通过计算机的硬件结构赋予计算机...
2019-07-15 19:46:38
32371
原创 【Linux】文件权限的划分——属主,同组用户,其他用户
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;和属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的周详信息时,最左边的一列为文件的访问权限。例一:$ ls -l sobsrc. tgz-rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tg...
2019-07-15 14:27:17
16608
原创 【C语言】switch的实现 && switch与if-else的执行效率比较
(一)switch的实现原理通俗的说,先在内存中把swich里面的case值按照顺序排一个表,当没有那个值时,它对应的就是default.具体地说,switch...case会生成一份大小(表项数)为最大case常量+1的跳表,程序首先判断switch变量是否大于最大case 常量,若大于,则跳到default分支处理;否则取得索引号为switch变量大小的跳表项的地址(即跳表的起始地址+...
2019-07-10 10:43:30
4710
原创 Linux上查看源代码汇编的命令方法
方法 一:使用gcc -S a.c得到a.s,用cat a.s查看;方法二:先gcc -c a.c得到a.o,用objdump -d a.o来反汇编查看里面的汇编代码;方法三:在调试中进入gdb, 用disassemble命令查看。...
2019-07-10 09:57:40
3808
原创 【C语言】for和while循环的区别
1. 从应用场景来看:for循环用于已知循环次数;while循环适用于未知循环次数。2. 从内存角度来看:局部变量在栈内存中存在,当for循环语句结束,那么变量会及时被gc(垃圾回收器)及时释放掉,不浪费空间。若使用循环之后还想去访问循环语句中控制那个变量,用while循环。...
2019-07-10 09:49:14
9147
原创 【C语言】逻辑位移和算数位移的区别
逻辑位移:逻辑移位是指逻辑左移和逻辑右移,移出的空位都用0来补。算数位移:算术移位 就需要分有符号型值和无符号型值对于无符号型值,算术移位等同于逻辑移位。而对于有符号型值 ,算术左移等同于逻辑左移,算术右移补的是符号位,正数补0,负数补1。C编译器采用的是哪一种?答:在汇编指令中,shl和shr表示逻辑左移和逻辑右移,sal和sar表示算术左移和算术右移。首先让我们来看...
2019-07-09 22:30:43
1566
原创 字符编码ASCII、Unicode、UTF-8、UTF-16等的区别
字符编码: 计算机只能处理数字,如果要处理文本文件就必须先把文本转化成数字才能处理。最早的计算机在设计的时候采用8个比特(bit)作为一个字节(byte)。所以一个字节能表示的最大整数就是255 ((2^8) - 1 )。ASCII编码: 最早的计算机字符编码为ASCII(美国信息互换标准代码),只有127个字母被编码到计算机里,也就是大小写英文字母、数字和...
2019-07-09 22:04:04
531
原创 【C语言】六种基本数据类型&默认类型转换
C语言包含的数据类型:char、short、int、long、float、double这六个关键字代表C语言中的6种基本数据类型。在不同的系统上,这些类型占据的字节长度是不同的。 数据类型 32位系统 64位系统 char 1 1 short...
2019-07-09 20:05:14
4607
原创 线索二叉树中序遍历,二叉树的反转输出
#include<iostream>using namespace std;typedef char ElemType;#define END '#'typedef enum{ LINK = 0, THREAD = 1}PointerTag;typedef struct BiThrNode //定义二叉树节点{ BiThrNode *leftchild; ...
2019-01-19 16:23:17
278
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人