您的位置:首页 > 职场人生

面试知识总结

2015-08-29 19:49 671 查看
1、认真细致。注重积累。抱着开放的心态。互联网是一个每天有新东西产生的地方。

2、不要说不会,记得说但是。可以问面试官你指的是。不要夸大自己的项目,但是又要说的很高深。说的有东西。写代码注意思考清楚再写。

3、做题的时候,先读,想相关的知识,再做,心算。

9.14cvete

1、<>和“”的区别

<>是先去标准库中寻找,再去用户定义的路径中去找

而“”则是相反

2、DES加密

DES加密是对称加密,即加密密文和解密密文是一样的,只是做了一个反变换,是分组加密,其前58位为密码部分,后面8位为奇偶校验位。破解方式为穷举法。

如2的56次方,如1台电脑1秒钟运行100万次,则也需要2000多年才能破解。总的来讲还是比较安全的。

其加密方式如下,为分组加密。

将要加密的数据以64位为单位进行分组。且分为前后32个字节两组,对后32位与密码进行结合,做为新的右半部分,原来的作为左半部分,这样重复16次,最后再做一个反置换。

解密过程则是反过来。

MD5加密是不可逆的加密,接收方只能通过逐个将数据进行加密后匹配对比,才能找出原文。

RSA是非对称加密,其公钥是公开的,秘钥是自己保留的。其安全性很高。至今还没有被破解过。

3、瀑布模型

是比较早的一种软件开发模型,其将软件开发过程分为需求分析,软件设计,程序编写,软件测试,维护运行等几个阶段,当后一个阶段出现问题,就反馈回去,再往下走,形成一个流动的结构。其问题是,软件成果只有到最后阶段才能看到,风险较大。同样错误也要到后期才能发现。

4、问题归约法

问题归约法从目标(要解决的问题)出发,逆向推理,通过一系列变换把初始问题变换为子问题集合和子子问题集合,直至最后归约为一个平凡的本原问题集合。

5、线性结构和非线性结构

常用的线性结构有:线性表,栈,队列,双队列,数组,串。

常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。

6、Unified Modeling Language (UML)又称统一建模语言

是面向对象发展的产物。

7、事务的4大特性

原子性

一致性

隔离性

持久性

8、动态交互是网页asp

9、内存分配

在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。

自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。

全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。

常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。

10、两个链表进行合并

原来头结点是有值的,因此这里定义一个头结点,指向大的,定义pcurrent为当前,head中小的指向下一个,p1,p2,while(p1&&p2)current保存,下移,之后判断是否为空。返回。

11、创建和删除索引

ALTER TABLE table_name ADD INDEX index_name (column_list)

ALTER TABLE table_name ADD UNIQUE (column_list)

ALTER TABLE table_name ADD PRIMARY KEY (column_list)

ALTER TABLE table_name DROP INDEX index_name

ALTER TABLE table_name DROP PRIMARY KEY

12、组合问题

#include<iostream>
#include<vector>
#include<string>
using namespace std;

void Combination(const char* str, int number, vector<char>& result,int Num)
{
if(*str == '\0')
{
if(result.size()!=Num)
return;
for(vector<char>::iterator ite = result.begin();
ite != result.end();
++ite)
{
cout<<*ite;
}
cout<<endl;

return;
}

result.push_back(*str);
Combination(str + 1, number - 1, result,Num);
result.pop_back();

Combination(str + 1, number-1, result,Num);
}

int main()
{
string str;
int Num;
cin>>str>>Num;
const char *pSrc=str.c_str();
vector<char> result;
Combination(pSrc, strlen(pSrc), result,Num);
system("pause");
return 0;
}
13、大数相乘

14、回数

15、网易cc删除字符

#include <iostream>
#include <assert.h>
#include <string>
#include <vector>
#include <set>
#include <math.h>
#include <algorithm>
using namespace std;
int strlen1(const char *a)
{
int count =0;
while(*a)
{
count++;
a++;
}
return count;
}
int compare1( const void* str1, const void* str2)
{
return strlen1((char*)str1) < strlen1((char*)str2);
}

int main()
{
int n;
cin>>n;
vector<const char *> vecStr;
vector<string> vecTmp;
string strId;
for(int i=0;i<n;i++)
{
string a;
cin>>a;

vecTmp.push_back(a);
}
cin>>strId;
for(int i=0;i<n;i++)
{
const char *p=vecTmp[i].c_str();
vecStr.push_back(p);
}

sort(vecStr.begin(), vecStr.end(), compare1);
int count=0;
for (int i = 0; i < vecStr.size(); ++i)
{
int it ;
while((it = strId.find(vecStr[i]))!= -1)
{
strId.replace(it,strlen1(vecStr[i]),"");
count++;
}
}
cout<<count<<endl;
return 0;
}
16、网易cc字符串组合排序

#include <iostream>
#include<string>
using namespace std;

int main()
{
int n;
cin>>n;
int All=n;
int a[26];

for(int i=0;i<26;i++)
a[i]=0;
int *flagout=new int
;
for(int i=0;i<n;i++)
{
string stra,strb,strpre,str;

cin>>stra>>strb>>strpre;

int counta=0;
int countb=0;
bool flag=false;
for(int j=0;j<stra.length();j++)
{
a[stra[j]-97]++;
counta++;
}
for(int j=0;j<strb.length();j++)
{
a[strb[j]-97]++;
counta++;
}
for(int j=0;j<strpre.length();j++)
{
countb++;
if(a[strpre[j]-97]==0)
{
flag=true;
break;
}

}
if(counta!=countb)
flag=true;
if(flag==true)
{
flagout[i]=0;
continue;
}
int P[26][100];
for(int m=0;m<26;m++)
{
for(int g=0;g<100;g++)
P[m][g]=0;
}
for(int j=0;j<strpre.length();j++)
{
int k=P[strpre[j]-97][0];
P[strpre[j]-97][++k]=j;
P[strpre[j]-97][0]=k;

}
for(int j=0;j<stra.length()-1;j++)
{
int a=stra[j]-97;
int b=stra[j+1]-97;

int k1=1;
int k2=P[b][0];
int p1=P[a][1];
int p2=P[b][k2];
if(p1>p2)
{
flag=true;
break;
}
}
if(flag==true)
{
flagout[i]=0;
continue;
}
for(int j=0;j<strb.length()-1;j++)
{
int a=strb[j]-97;
int b=strb[j+1]-97;

int k1=1;
int k2=P[b][0];
int p1=P[a][1];
int p2=P[b][k2];
if(p1>p2)
{
flag=true;
break;
}
}
if(flag==true)
{
flagout[i]=0;
continue;
}
flagout[i]=1;
}
for(int i=0;i<n;i++)
cout<<flagout[i]<<endl;
delete []flagout;

}


17、网易cc下单问题

/article/8613188.html

#include<iostream>
#include<vector>
using namespace std;
#define MAX(a,b) ((a)>(b)?(a):(b))

int main()
{
int n;
cin>>n;
vector<vector<int> > MaxGetValue(n,vector<int>(3,0));
vector<int> Price(n,0);
vector<int> preMax(3,0);
for(int i=0;i<n;i++)
cin>>Price[i];
for(int i=0;i<=2;i++)
preMax[i]=-Price[0];
for(int i=1;i<n;i++)
{
preMax[0]=MAX(preMax[0],MaxGetValue[i][0]-Price[i]);
for(int t=1;t<=2;t++)
{
int mx=MaxGetValue[i-1][t];
mx=MAX(mx,preMax[t-1]+Price[i]);
preMax[t-1]=MAX(preMax[t-1],MaxGetValue[i][t-1]-Price[i]);
MaxGetValue[i][t]=mx;
}
}
cout<<MaxGetValue[n-1][2];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: