近期参加了多次笔试与面试,大概做一下梳理。
笔试:田忌赛马问题,拿石问题;
面试:封装链表!!!(第二次考察这个了),排序(快排,冒泡),不用中间变量交换两个变量的值(a,b->a+b,a-b->a-b,b),TCP/IP,七层网络结构,TCP/UDP区别,LINUX常用指令,LINUX根目录文件,程序编译过程,SQL基本语句(查找,联合查找)动态内存分配 堆&栈
田忌赛马问题
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int comp(const void *a,const void *b)
{
return *(int *)b-*(int *)a;
}
int main(void)
{
int num;
while(cin>>num)
{
int m[2000],n[2000];
for(int i=0;i<num;i++)
scanf("%d",&m[i]);
for(int j=0;j<num;j++)
scanf("%d",&n[j]);
qsort(m,num,sizeof(m[0]),comp);
qsort(n,num,sizeof(n[0]),comp);
int a=0;
int b=0;
int a1=num-1;
int b1=num-1;
int t=0;
while(a<=a1)
{
if(m[a1]>n[b1])
{
a1--;
b1--;
t++;
}
else if(m[a1]<n[b1])
{
a1--;
b++;
t--;
}
else if(m[a]>n[b])
{
a++;
b++;
t++;
}
else
{
if(m[a1]>n[b])
{
b++;
a1--;
t++;
}
else if(m[a1]<n[b])
{
b++;
a1--;
t--;
}
else
{
b++;
a1--;
}
}
}
printf("%d\n",t);
}
return 0;
}
封装链表
排序
冒泡
void maopao(vector<double>&xx)
{
int size = xx.size();
for (int i=0;i!=size-1;i++)
{
for (int j=0;j!=size-1-i;j++)
{
if(xx[j]<xx[j+1])
swap(xx[j], xx[j + 1]);
}
}
}
快排
int partition(vector<double>& xx, int lo, int hi)
{
swap(xx[lo], xx[lo + rand() % (hi - lo+1)]);
double pivot = xx[lo];
while (lo<hi)
{
while ((lo < hi) && (pivot <= xx[hi]))
hi--;
xx[lo] = xx[hi];
while ((lo < hi) && (xx[lo] <= pivot))
lo++;
xx[hi] = xx[lo];
}
xx[lo] = pivot;
return lo;
}
void quicksort(vector<double>& v_d, int lo, int hi)//lo hi为数组首位角标
{
if (hi - lo < 2) return;
int mi = partition( v_d, lo, hi);
quicksort(v_d, lo, mi);
quicksort(v_d, mi + 1, hi);
}
不用中间变量交换两个变量的值
(a,b->a+b,a-b->a-b,b)
七层网络结构
TCP/UDP/IP
LINUX常用指令
LINUX根目录文件
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。 由于系统开机时需要特定的开机软件、核心文件、开机所需程序、函式库等等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。 因为根目录是这么的重要,所以在 FHS 的要求方面,他希望根目录不要放在非常大的分区槽内, 因为越大的分区槽妳会放入越多的数据,如此一来根目录所在分区槽就可能会有较多发生错误的机会。
根目录(/)所在分区槽应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区槽内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。
摘自《鸟叔LINUX私房菜》
程序编译过程
SQL基本语句(查找,创建联结)
seleect * from 表 where 条件
select vend_name,prod_name,prod_price
from vendors,products
where vendors.vend_id=products.vend_id
order by vend_name,prod_name;
动态内存分配
new malloc
delete free
堆由程序员自己分配,new malloc等
栈由程序自动管理,函数递归中存储变量
秋招准备~
c++:
《c++ primer》 二刷(864)
《stl源码解析》(534)
《深度探索C++对象模型》(352)
《Linux多线程服务器端编程》(598)
linux:
《鸟哥的 Linux 私房菜 基础篇 第4版》(1051)
《UNIX 环境高级编程@2013 (第3版 扫描版)》(822)
《UNIX 网络编程卷1 第3版》)(824)(unp)(卷1 前8章)
《深入理解计算机系统 第3版》(面试)
计算机网络:
《TCP/IP》(12-16章)
数据库:
《MySQL必知必会》(搞定)
算法:
《剑指offer》 (129/334)(17/66题)
《数据结构c++》(358)(12章)
设计模式:
《Head First 设计模式》(677)