![](https://img-blog.csdnimg.cn/20200527094225145.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试题
键指offer面试题+真实面试题
无名之辈W
不忘初心,方得始终
展开
-
C++面试复盘
文章目录1. C++的三大特性2. 讲讲多态的使用3. STL库有了解吗,都有啥,讲讲熟悉的几个库面试官巨无情。全程问C++知识。1. C++的三大特性C++的三大特性:封装、继承和多态。封装:将有关的数据及操作封装在一个对象中,外部在使用时调用相应的功能,这样增加了安全性,简化了编程;继承:继承是面向对象的重要概念。就是在软件开发的过程中已经建立了一个类了,探后又想建立另一个与已有类功能类似的一个类,这个时候就可以用继承;多态:对同一个消息所做出的反应不同,也就是执行不同的操作,这样提高了代原创 2020-09-23 10:45:30 · 146 阅读 · 0 评论 -
算法——递归的练习
文章目录Tips:注意文章中标红的地方,这些都是容易犯错的地方leecode面试题16.11——跳水板leecode1137——第N个泰波那契数leecode面试题 08.05. ——递归乘法Tips:注意文章中标红的地方,这些都是容易犯错的地方leecode面试题16.11——跳水板题目描述:面试题 16.11. 跳水板你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所原创 2020-08-25 23:08:05 · 259 阅读 · 0 评论 -
剑指38 & 牛客——字符串的排列
文章目录面试题38:字符串的排列分析:1. 用递归思路实现全排列:递归C代码:2. 用DFS(深度优先搜索)实现全排列:DFS实现代码:DFS(AC):待解答~3. 利用C++中STL提供的next_permutation函数(AC)使用next_permutation的函数代码:总结:面试题38:字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca原创 2020-08-14 16:18:54 · 87 阅读 · 0 评论 -
剑指offer——面试题26:树的子结构
题目描述(from nowcoder):输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)分析:树1是原树,树2是要被匹配的树。思路总体分为两部分,第三部分是对特殊情况的处理:遍历树1找与树2根值相同的节点,找打了之后就继续判断其结构是否相匹配;如果不匹配,则返回到开始判断的节点,继续遍历树1的左子树与右子树重复步骤1的做法,直到树2被遍历完成之后都和树1的某一部分匹配为止返回true,否则返回false。整体实现思路完成之后,考虑特殊情况..原创 2020-08-06 11:48:59 · 80 阅读 · 0 评论 -
「数据库知识」——SQL处理学生表
SQL基础用法1. 创建数据库2. 数据库的查看与使用3. 表格的查看与新建4. 插入数据5. 查询数据原创 2020-08-04 20:47:59 · 1481 阅读 · 0 评论 -
键指offer——面试题24:反转链表、面试题25:合并两个排序的链表
面试题24:反转链表输入一个链表,反转链表后,输出新链表的表头。分析从院链表的头结点开始反转,先将头结点指向空指针,然后依次反转原链表中的节点,直到遍历到原链表的最后一个节点的下一个节点nullptr处,将其赋值为结果链表的头结点即结束。核心: 先让next移动next = node->next;,然后再反转node->next = pro;画图最好理解了,根据这个流程可以写出整体的框架,然后就是注意空链表与链表中只有一个元素的特殊情况处理即可。代码/** * Definitio原创 2020-08-04 15:50:19 · 80 阅读 · 0 评论 -
剑指offer——面试题22:返回链表中倒数第k个节点、求链表的中间节点
题目描述1:返回链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。思路双指针即快慢指针方法。考虑特殊情况:1. 链表为空 2. k=0 3. k<链表长度。代码/** * Definition for singly-linked list. * struct ListNode { *原创 2020-08-04 10:09:38 · 175 阅读 · 0 评论 -
剑指offer——面试题21:调整数组顺序使奇数位于偶数前面、考察代码的可重用性、vector元素的访问方法:迭代器/下标法
文章目录面试题21:调整数组顺序使奇数位于偶数前面题目描述1:[from leecode]考察代码的可重用性题目描述2:[from牛客网]笔记1. 定义vector方法2. 遍历访问vector的方法面试题21:调整数组顺序使奇数位于偶数前面题目描述1:[from leecode]输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确原创 2020-08-01 09:56:15 · 95 阅读 · 0 评论 -
「计算机网络知识」更新中~
TCP三次握手画图自己画一个,分析握手过程,进行理解。TCP四次挥手TCP和UDP的区别计算机网络体系结构OSI七层协议TCP/IP四层协议五层协议原创 2020-07-30 16:05:32 · 341 阅读 · 0 评论 -
剑指offer——面试题19:正则表达式匹配、面试题20:表示数值的字符串
面试题19:正则表达式匹配题目描述:请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配。分析怎么说呢,对于当模式中字符的下一个为‘*’还是有点不理解,为什么会有三种情况出现,现大致举了三个例子来匹配三种情况,总之就是因为“*”可以匹配任意次(包括0)次的*之前的字符原创 2020-07-29 22:29:01 · 144 阅读 · 0 评论 -
剑指offer——面试题17:打印从1到最大的n位数
题目描述剑指的剑终于打对了~题目描述: 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。分析(以n=3为例)没有递归之前的思路是一个位一个位的放值,先放第0位,也就是百位数,然后是十位,最后是个位。每一个百位值都对应有9个十位的值,对应有9*9个个位的值。这个图是自己理思路时写的代码,仅供参考。其实这个代码更好理解一些: //第0位的数值设置 for(int i=0;i<10;i++) { number[0] = i+'原创 2020-07-04 17:38:02 · 300 阅读 · 0 评论 -
键指offer——面试题9:用两个栈实现队列
面试题9:用两个栈实现一个队列题目描述: 已知队列的声明如下,请实现他的两个函数appendTail个deleteHead,分别完成在队列的尾部插入节点和在队列头部删除节点的功能。//声明两个栈template <typename T> class CQueue{ public: CQueue(void); ~CQueue(void); void appendTail(const T& node); T deleteHead(); private: st原创 2020-06-24 15:55:54 · 100 阅读 · 0 评论 -
设计拼写检查程序
为啥写这个呢?是因为今天有被HR问道这个问题,但没有手撕,只是说下思路,我打算自己实现以下。拼写检查程序题目描述:请设计一个自动拼写检查函数,对输入单词的错误依据字典进行修正。输入为一个单词和一组字典单词,每个单词长度不超过9位;若字典中没有与输入相同的单词,认为输入单词错误,需要从字典中选择一个修正单词;修正要求:与输入单词长度相同,且单词中不同字符数最少;存在多个修正单词时,取字典中的第一个;输出修正后的单词。...原创 2020-06-21 17:48:43 · 657 阅读 · 0 评论 -
深度优先搜索(DFS) + DFS的应用:字符串的排列问题
文章目录深度优先搜索**基本思路:****举例:****穷举:****深度优先算法思路:**DFS应用:全排列问题深度优先搜索深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。 深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。搜索算法是利用计算机的高性能来有目的的穷举一个问题的部分或所有的可能情况,从而求出原创 2020-06-19 20:48:03 · 502 阅读 · 0 评论 -
leecode面试题29——顺时针旋转打印矩阵
第一步:问题分析第二步:阐述你的思路,比如打算用什么算法或者数据结构去解决这个问题,通过描述看是否行得通开始写代码原创 2020-06-08 19:03:41 · 169 阅读 · 0 评论 -
面试practice:2软测+1C++开发
可以谈谈你平常关注哪些专业相关的网站或平台吗?答:平常:CSDN菜鸟教程,实验楼,leecode,牛客网写论文:知网,看书比如数据分析这类的请设计一下吃鸡游戏压力测试参考回答:一.首先明确需要测试压力的内容:1.游戏服务器硬件a.硬盘I/ob.内存c.CPU2.网络压力a.长连接a1.最大连接数a2.流量(内网、外网、进、出)b.长连接短周期(类似Http的TCP应用,这个比较特殊的一个需求,专门针对LoginAgent)b1.每秒建立的连接数b2.实际处理能力3.原创 2020-06-05 17:22:27 · 328 阅读 · 0 评论 -
键指offer——面试题7:重建二叉树(p60-64)
二叉树这里给我快看瞌睡了,大家还是要保护好眼睛呐~面试题7:重建二叉树题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析:解决方法就是将大的问题转化成一个个小的问题解决,根据前序遍历找到这个根节点,然后就可以在中序遍历里找到这个根节点,然后将其分为左子树与右子树,再将左子树与右子树分别看成一个二叉树去原创 2020-06-05 16:11:54 · 109 阅读 · 0 评论 -
编程题:字符串循环左移(ROL)
题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!分析:用的是最简单以理解的方法,先将str的后k-len个字符输入到结果字符串,然后再将前k个字符输入到结果字符串。class Solution {public: string LeftRot原创 2020-06-04 12:04:48 · 1631 阅读 · 0 评论 -
简要说明C++和C的区别
区别1:解决问题的思想方法不一样C语言时面向过程的程序设计,主要的核心为数据结构和算法,具有高效的特性。C语言的程序设计主要考虑如何通过一个过程来输入进行处理得到一个输出。C++是面向对象的程序设计,首先考虑的是如何构造一个对象模型,让这个模型配合相对应的问题,通过获取对象的状态信息来得到输出或实现控制。所以,C和C++的主要区别就是解决问题的思想方法不一样。区别2:C++相对于C来说是有增强的C++相对于C来说的增强主要体现在如下几方面:(1)功能扩充:register关键字、struct、b原创 2020-06-04 11:32:55 · 4587 阅读 · 0 评论 -
leecode面试题 02.02——返回链表倒数第 k 个节点
题目描述:实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。说明:给定的 k 保证是有效的。分析:先想到的就是将链表中的元素放到一个栈里边保存,然后从栈里边顺序输出第k个值即可,但超出了时间限制。pass代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), n原创 2020-06-03 15:08:27 · 130 阅读 · 0 评论 -
键指offer——动态规划与贪婪算法+面试题14:剪绳子(p94-p98)
动态规划(dp,Dynamic Programming)如果编程题是求一个问题的最优解(通常是最大值或最小值),而且该 问题能够分解为若干个子问题,并且子问题之间还有重叠的更小的子问题,就可以考虑用动态规划来解决。动态规划求解的问题的四大特点:求一个问题的最优解;整体问题的最优解是依赖各个子问题的最优解;大问题可以分成若干个子问题,这些子问题之间还有相互重叠的更小的子问题;从上往下分析问题,从下往上求解问题。由于子问题在分解大问题的过程中重复出现,为了避免重复求解子问题,可以从下往上的顺序原创 2020-05-30 11:19:40 · 179 阅读 · 0 评论 -
键指offer——面试题11:旋转数组的最小数字(p79-p87)
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。分析:二分查找法:让两个指针分别指向数组的第一个元素和最后一个元素。按照题目中的规则就是第一个元素应该是大于或等于最后一个元素的。我们以数组{3, 4, 5, 1, 2}为例。首尾指针的移动过程如图所示,不断循环,直到最终两个指针的距离为1时,表明第一个指针已经指向第一个递增原创 2020-05-25 21:17:36 · 120 阅读 · 0 评论 -
键指offer——面试题10:斐波那契数列(p73-79)、斐波那契的应用:青蛙跳台阶问题
文章目录题目描述递归和循环递归循环斐波那契数列(Fibonacci sequence)笔记long关键字unsigned题目描述题目一:求斐波那契数列的第n项。写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列的定义如下:分析:方法一:递归方式,但效率不高,因为在斐波那契数列计算过程中重复的计算太多,因此时间复杂度是以n的指数方式递增的。long long Fibonacci(unsigned int n){ if(n = 0) return 0; i原创 2020-05-22 15:06:29 · 344 阅读 · 0 评论 -
键指offer——面试题5:字符串之替换空格(p49-54)
替换空格题目描述:实现一个函数,将字符串中的每个空格替换成"%20"。例如:输入“We are happy.”,则输出"We%20are%20happy."。分析:我们这题就先假设所给的字符串长度够长,足以用来将全部空格替换成"%20",不然的话替换的时候就会覆盖原有的字符串喽。以string = “We are happy.”为例子,如图所示:原始string空格处插入"%20"之后就变成了新的字符串newString。在操作的时候我们先计算出原始string的长度为14(包括结尾处的'\0原创 2020-05-21 14:16:32 · 109 阅读 · 0 评论 -
键指offer——面试题4:二维数组中的查找(p44-48)
二维数组的查找题目描述:在一个二维数组中,每行都按从左到右的方向递增排序,每列按从上到下的方式递增排序。完成一个函数,输入一个要查找的数num和这个二维数组,判断这个二维数组中是否有这个值。分析:办法就是现在这个二维数组中找到一个值,和num比较大小:相同,则return True;否则不相同 :num大于这个值的话一定是在这个数的右方和下方区域,num小于这个值的话一定是在这个数的左下方区域。相对简单的就是把二维数组中的这个要和num进行比较的数放在右上角或者左下角区域。放右上角:这样若num原创 2020-05-21 09:12:47 · 222 阅读 · 0 评论 -
键指offer——面试题1:赋值运算符函数(p25)
面试题1:赋值运算符函数题目: 如下类型CMyString的声明,请为该类型添加赋值运算符函数class CMyString{//内部成员函数public: CMyString(char* pData = nullptr);//构造函数,对象 CMyString(const CMyString& str); ~CMyString(void);private: char*...原创 2020-05-08 16:59:11 · 157 阅读 · 0 评论 -
键指offer——面试题3:数组中重复的数字(p37-43)
面试题3:数组中重复的数字题目一:找出数组中重复的数字题目:在一个长度为n的数组里的所有数字都在0~n-1范围内。数组中某些数字是重复的,请找出数组中任意一个重复的数字。例如:输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复数字2或者3。注意仔细读题,尤其是这些信息: 长度为n;数字范围是0~n-1(因此也一定是有重复数字的);找出任意一个。动手写代码之前,问清楚面试官的需求,是求任意一个重复字符还是求出全部的重复字符。分析:可以用哈希表:从头到尾扫描数字,每扫描到一个原创 2020-05-15 18:25:09 · 235 阅读 · 0 评论