面试
文章平均质量分 52
hello_bravo_
这个作者很懒,什么都没留下…
展开
-
代码每日一练--total38
前言从现在开始,争取每天写一道题目,再将题目的解答思路分析出来,将每一类型的题归纳到一起去,这一篇主要写动态规划,将不断进行更新,欢迎一起探讨思路。问题1描述https://leetcode-cn.com/problems/wildcard-matching/submissions/给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘’ 的通配符匹配。‘?’ 可以匹配任何单个字符。'’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可原创 2021-08-02 23:43:18 · 237 阅读 · 0 评论 -
每日练习(5)
C/C++ (1)clone是fork的升级版本,不仅可以创建进程或者线程,还可以指定创建新的命名空间(namespace)、有选择的继承父进程的内存、 甚至可以将创建出来的进程变成父进程的兄弟进程等等 (2)引用和多态的关系:引用可以作为产生多态效果的手段 (3)#include <stdio.h>void f(char**p) { *p += 2;//指针+=2}int m原创 2017-03-02 22:21:20 · 476 阅读 · 0 评论 -
小知识积累(2)
mysql服务器相互作用的通信协议: TCP/IP Socket 共享内存 命令管道mysql支持master-slave复制,也支持master-master复制Mysql复制分成三步: (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); (2) slave将master的binary lo原创 2017-02-14 18:05:44 · 381 阅读 · 0 评论 -
有关字符串的笔试题
小总结 1.//转换字符串格式为原来字符串里的字符+该字符连续出现的个数//1233422222转换为1121324125//思路:两个vector来存放,一个存放字符,一个存放次数void printChTe(string str){ vector<int> myTime; vector<char> myChar; int i = 0; while(i原创 2017-02-25 19:26:43 · 1107 阅读 · 0 评论 -
每日练习
C/C++ 1. //为了实现链式操作将目的地址返回 //注意source的const //两个指针不能为空 char * strcpy(char *strDest, const char *strSrc) { assert((strDest != NULL) && (strSrc != NULL)); char *address = strDest; wh原创 2017-02-25 22:44:02 · 356 阅读 · 0 评论 -
每日练习(2)
C / C++ 1. int i = 0, a = 1, b = 2, c = 3; i = ++a || ++b || ++c; printf(“%d %d %d %d”, i, a, b, c); 对于 || 如果前一条语句为真那么后面的就不用去执行判别了 2. 对函数指针赋值可以采用以下方式pf=&p1或者pf=p1 3. 对于基类中没有默认构造函数的情况, 我们在子类中所原创 2017-02-26 20:46:44 · 519 阅读 · 0 评论 -
每日练习(6)
C++ 1.float 类型(即 IEEE754 单精度浮点数格式)能表示的最大整数是 2 ^ 128 - 2 ^ 104 2. myClass::foo() { delete this; } .. void func() { myClass *a = new myClass(); a->foo(); } //正确的 3. int func()原创 2017-03-05 17:11:06 · 571 阅读 · 0 评论 -
每日练习(14)
C++ 1.void func(char(&p)[10]){ printf("%d\n", sizeof(p));}//p是装10个char类型数据的数组的引用,其结果类似于char p[10]; printf("%d\n", sizeof(p));2. 在组合时, 在组合类的析构函数中不需要显式调用其成员对象的析构函数 3.int main() { printf("Hell原创 2017-03-19 22:01:03 · 397 阅读 · 0 评论 -
每日练习(7)
C++#include <iostream>using namespace std;int main(){ int c = 1; int y = c++ + c++ + c++;//一整句后才改变其值 cout << y << endl;//3 cout << c << endl;//4 return 0;}网络基础 1.http协议无状态无连接 2.原创 2017-03-07 09:22:42 · 272 阅读 · 0 评论 -
每日练习(8)
C++ #include <iostream> using namespace std;struct Node{ int size; char data[0];};//以整个结构体来算data{0]所占空间为0//以单个data[0]来看data[0]所占空间为1//柔性数组//柔性数组, 它只能放在结构体末尾, 是//申明一个长度为0的数组,就可以使得这个结原创 2017-03-07 22:29:19 · 556 阅读 · 0 评论 -
日常练习(9)
C++ 1.构造函数不可以为const函数,const函数不改变成员变量,而构造函数意义在于初始化 2.虚拟内存的容量只受计算机地址位数的限制 3.#include<stdio.h>int cnt = 0;int fib(int n){ cnt++; if (n == 0) return 1; else if (n == 1) re原创 2017-03-11 17:23:54 · 428 阅读 · 0 评论 -
每日练习(10)
C++ 1.重载与多态 a.成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 b.覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有virtual 关键字。 c.“隐藏”是指派生类的函数屏蔽了原创 2017-03-12 11:26:11 · 923 阅读 · 0 评论 -
每日练习(11)
C++* 1.static的作用 1)声明静态局部变量 2)声明静态外部全局变量 3)声明静态外部函数 2.类A的友元(friend)类B可以访问类A的私有成员。 3.纯虚函数操作系统 1.大多数RTOS(实时操作系统)调度算法都是可抢占式(可剥夺式)的 2.静态页式管理是一次性为要求内存的进程分配足够多的页面,无法将外存的空间利用起来实现虚存 3.pthread_spin_lo原创 2017-03-14 09:41:15 · 748 阅读 · 0 评论 -
每日练习(12)
C++ 1.int totalBlank = 0;int blankNum = 0;int taglen = page.taglst.size();A for (int i = 1; i < taglen - 1; ++i){ //check blank B while (page.taglst[i] == "<br>" && i < t原创 2017-03-15 22:08:34 · 583 阅读 · 0 评论 -
每日练习(13)
C++include “stdio.h”1.class A{public: A() { printf("1"); } A(A &a) { printf("2"); } A &operator=(const A &a) { printf("3"); return *thi原创 2017-03-16 21:52:54 · 440 阅读 · 0 评论 -
每日练习(15)
C++ (1)数组只能通过值参数和地址参数两种方式传递给函数,而且数组的大小不一定是在编译期间确定的,也有动态数组 (2)myClass::~myClass() { delete this; this = NULL;}this是一个常量指针,不可更改,所以编译错误 (3)class ClassA{public: virtual ~ClassA() {原创 2017-04-06 09:49:53 · 458 阅读 · 0 评论 -
面试过程总结(经验总结无题目)
二月中旬就开始找实习了,终于在四月末的时候拿到了一个各方面都非常满意的offer,看之前很多人发放面经什么的,我也看了很多,现在说一些自己的感悟希望对大家能有所帮助吧。 1.不写 题目的原因,一是因为我懒,二是因为其实写了没有多大的意义,我的那些公司都面试结束了,同学们看了也没有参考意义,其次是哪怕没有结束,也没多大参考意义,每个公司重点侧重你可以从别人面经总结,面试官问的题也大多网上都有原创 2017-04-30 10:29:41 · 808 阅读 · 0 评论 -
小知识积累
1.有关++和printf的应用 printf是从右向左压栈 printf(“%d,%d\n”,ptr,(++ptr)); 先是++ptr 从右至左,所以输出的两个值是一样的 *(ptr++)+=123; 那么先是*ptr+=123; 然后是ptr++;2. float a = 1.0f; (int&)a的作用是将浮点数地址开始的sizeof(int)个字节当成int型的数据输出,原创 2017-02-13 17:17:17 · 272 阅读 · 0 评论 -
每日练习(4)
linux 1. (1)route命令用来显示目前本机路由表的内容,并且还可以针对路由表中的记录来进行相应的添加 删除或修改操作 (2)ifconfig命令用来检测和设置本机的网络接口 (3)setstat命令用来查看主机的连接状态 2. 通过管道统计prog.c函数中for语句通过的次数,需要使用的指令frep,wc操作系统 1.在多道程序系统中,系统的现有空闲可用资源能否满足后备原创 2017-03-01 18:12:54 · 946 阅读 · 0 评论 -
面试题汇总
题目都是我自己写的,所以也一定是完全正确的,因为能有很多细节没有考虑,如果大家发现了希望指正 (1)完美世界2017 删除vector中所有偶数(最想去的地方呀。。。)void deleteEven(vector<int>& v2){ vector<int>::iterator Iter = v2.begin(); for (Iter; Iter != v2.end();)原创 2016-10-20 18:14:48 · 294 阅读 · 0 评论 -
面试题:C++汇总
这篇文章放的是我看的面试题我不熟练或者不会的有关C++的知识,算是自己将来复习笔记,希望能对别人也有所帮助(1)虚函数的实现机制 虚函数是通过虚表和虚指针来实现的,具体而言实现虚函数的一个类拥有一个虚表(vtable),每个对象拥有一个虚指针(vptr),虚表就相当于一个地图,我们通过虚指针就可以在虚表上面找到我们需要的函数。(2)堆和栈的区别 (1)stack的空间由操作系统自动分配/释放,h原创 2016-10-30 11:42:04 · 288 阅读 · 0 评论 -
高质量的代码
小知识: (1)double类型的数据不能够通过==来比较,因为精度会受到影响 (2)代码规范的三个重要性,书写,布局,函数变量名称的命名 (3)代码的完整性,功能测试,边界测试,负面测试(错误输入) 要考虑突破自己的常规思维,要多想测试用例,这个是一般学生都欠缺的思维方式,因为我们重点一般都是如何实现功能,很少有人会去写测试用例(起码我身边的人和自己开始都是这样的啦,但是正在努力转变思维原创 2017-01-04 16:42:57 · 334 阅读 · 0 评论 -
海量数据处理(面试)
题目: 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 假设有一个大文件,里面以字符形式存储了IP与IP访问次数,这两数据按空格隔开,然后一行对应一个IP。原创 2016-12-27 20:45:20 · 369 阅读 · 0 评论 -
字符串(面试)
最近看书看不下去就刷面试题,决定把字符串有关面试题都写这个文章里1.实现一个函数在字符串中把空格替换成”%20” 注意是否会发生内存溢出#include <iostream>#include <cstring>using namespace std;void changeZi(char** buff, int size){ int num = 0;//多少个空格 char*原创 2016-12-28 10:45:23 · 619 阅读 · 0 评论 -
数据结构(面试)
看了剑指offer发现一个问题有好多种思路去解决,之前自己考虑的都太普遍性,应当多样化的来思考问题 最深体会:写出实现功能的代码,和写出优异的代码是两回事! 1.链表的倒叙打印 (1)是否可以改变链表结构,可以改变就改变以后打印 (2)不允许改变链表结构可以直接使用循环,但是时间复杂度会是O(n) (3)使用栈来存储,那么就会简单很多,只需要O(n)的时间复杂度 (4)由递归和循环的关系原创 2016-12-28 20:23:04 · 695 阅读 · 0 评论 -
算法和数据操作(面试题)
自己实现的快速排序 快速排序: 时间复杂度平均O(nlogn),空间复杂度为O(1)void quickSort(int arr[],int length){ if (length 1)//当数组长度小于等于1那么就不必排序了 { return; } int start = 0; int end = length - 1;原创 2016-12-29 16:45:01 · 263 阅读 · 0 评论 -
思路题
1.输入一个二叉树的序列要求得出二叉树的镜像 ps:可以先画图进行分析思考 这道题目很好想,既然是镜像,那么原二叉树的左子树即为新二叉树的右子树,依次类推,构造代码如下(左右子树均互换即可)treeNode* createImage(char*& str){ if (str == NULL) { return NULL; } if (s原创 2017-01-15 19:26:26 · 291 阅读 · 0 评论 -
时间效率与空间效率的平衡
1.获取第index个丑数 一般方法不再论述,使用简便方法的思路是: 使用空间对换时间,不再去管不是丑数的数字,而是用一个数组,只针对丑数来进行判别和运算 丑数应该是另一个丑数乘以2,3或者5的结果,因此我们可以创建一个数组,里面的数字是排好序的丑数,每一个丑数都是前面的丑数乘以2,3,5得到的int Min(int number1, int number2, int number3){原创 2017-02-08 15:25:10 · 1544 阅读 · 0 评论 -
linux知识汇总
linux 1.ls不可以用来查看文件内容 2.任何一个进程删除文件时,另外一个进程会立即出现读写失败(两个进程共享一个文件的时候) 3.crontab文件由6个域组成,MIN HOUR DAY MONTH DAYOFWEEK COMMAND 4. Linux下多少个”-“将被打印: int main(void) { int i; for (i = 0; i<4; i原创 2017-02-27 20:45:59 · 435 阅读 · 0 评论 -
温故知新
主要是一些容易忽视或者不熟练的知识点 1. printf从右向左压栈 printf(“%d,%d\n”,*ptr,*(++ptr));2. 用一个表达式判断2的n次方,但是不准用循环 采用2的n次方的性质 x&(x-1)==0则是2的n次方3. x&y是x和y相同位的一半 x^y是取x和y不同位 x^y>>1则是x^y不同位的一半4. C和C++ C语言是一种结构化的语言,重点原创 2017-02-27 22:31:16 · 298 阅读 · 0 评论 -
指针和引用
一.指针和引用的区别: 1.指针可以指向空而引用不可以 2.使用引用不需要检测合法性而使用指针需要 3.指针可以更改指向目标而引用不可以 4.仅当指向一个对象并且一旦指向一个对象就不会改变指向那么应该使用引用二.const常量赋值时,必须同时初始化三. char c[] = “helloworld”;//局部变量对应的是内存中的栈 char* c = “helloworld”;//全局原创 2017-02-19 17:51:30 · 243 阅读 · 0 评论 -
面向对象
一.面向对象的优点: (1)良好的可复用性 (2)易维护 (3)良好的可扩充性二.面向对象的基本概念 对象,类和继承三.注意初始化列表的初始化变量顺序是根据成员变量的声明顺序来执行的 重点:初始化列表的初始化顺序,如果你直接用等于那就不一样了四.常量必须在构造函数的初始化列表里面初始化或者将其设置成static五.为什么说虚拟的析构函数是必要的? 这是为了对抗多态,比如说 B类继承A类原创 2017-02-19 22:33:40 · 275 阅读 · 0 评论 -
日常思维练习
1.数字在排序数组中出现的次数使用二分法,可以将时间复杂度变成O(logn)代码#include <iostream>using namespace std;int getFirstK(int *arr, int len, int k, int s, int e){ if (arr == NULL || len <= 0 || s > e || s < 0 || e < 0)//参数检验原创 2017-02-10 18:36:23 · 314 阅读 · 0 评论 -
每日练习(3)
Linux 1. 关于UNIX系统代码段和数据段分开的目的有 (1)可共享正文 (2)可共享数据(3)可重入(4)可保护代码为只读(5)更好支持内存回收策略 2. fseek是函数,read,pread,write,pwirte,lseek都是系统调用 3. l表示link 连接文件 d表示directory 目录文件 4.Redhat 9所支持的安装方式有 (1)HTT原创 2017-02-28 22:11:23 · 360 阅读 · 0 评论 -
日常思维练习(2)
n个骰子扔在地上,所有骰子朝上点数之和为s,输入n打印出s的所有可能的值出现的概率 个人解答#include <iostream>using namespace std;void getSum(int n, int sum, int *arr)//运用递归{ if (n == 1) { int tmp; for (int i = 1; i <=原创 2017-02-11 11:32:51 · 369 阅读 · 0 评论 -
TCP与UDP的区别
TCP协议:传输控制协议,提供的是面向连接,可靠的字节流服务。UDP协议:用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。关于连接问题 TCP:连接前必须在双方之间用三次握手建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。原创 2016-10-29 17:28:22 · 271 阅读 · 0 评论