if(BD!=NULL)
{
Inorder(BD->left);
printf("%5d", BD->key);
Inorder(BD->right);
}
} void main() { int i,length; int a[MAX]; Bnode *root=NULL; printf("输入数组大小:"); scanf("%d",&length); for(i=0;i<length;i++) { scanf("%d",&a[i]); root=btlnsert(a[i],root); } printf("输出所给排序为:\n"); Inorder(root); }
## 3、二叉树层次遍历.c
/*********************************************************** 我的信息: * 编程ID ***********************************************************/ #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MS 50 struct BTreeNode { char date; struct BTreeNode *lchild; struct BTreeNode *rchild; }; typedef struct BTreeNode TNODE; TNODE *creat(int n) { int i,j; char x; TNODE *narr[100],*p,*t; for(j=1;j<=n;j++) { printf("input i,x:\n"); scanf("%d,%c",&i,&x); p=(TNODE*)malloc(sizeof(TNODE)); p->date=x; p->lchild=NULL; p->rchild=NULL; narr[i]=p; if(i==1) t=p; else { if(i%2==0) narr[i/2]->lchild=p; else narr[i/2]->rchild=p; } } return(t); } void Inorder(struct BTreeNode *BT) { if(BT!=NULL) { Inorder(BT->lchild); printf("%5c", BT->date); Inorder(BT->rchild); }
} void levelerder(struct BTreeNode *BT ) { struct BTreeNode *q[MS]; int front=0,rear=0; if(BT!=NULL) { rear=(rear+1)%MS; q[rear]=BT; } while(front!=rear) { struct BTreeNode *p; front=(front+1)%MS; p=q[front]; printf("%5c",p->date); if(p->lchild!=NULL) { rear=(rear+1)%MS; q[rear]=p->lchild; } if(p->rchild!=NULL) { rear=(rear+1)%MS; q[rear]=p->rchild; } } } void main() { TNODE *t; int a; printf("input the number of BTreeNode\n"); scanf("%d",&a); t=creat(a); Inorder(t); levelerder(t); }
## 4、二叉树非递归遍历.c
/*********************************************************** 我的信息: * 编程ID ***********************************************************/ #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MS 50 struct BTreeNode { char date; struct BTreeNode *lchild; struct BTreeNode *rchild; }; typedef struct BTreeNode TNODE; TNODE *creat(int n) { int i,j; char x; TNODE *narr[100],*p,*t; for(j=1;j<=n;j++) { printf("input i,x:\n"); scanf("%d,%c",&i,&x); p=(TNODE*)malloc(sizeof(TNODE)); p->date=x; p->lchild=NULL; p->rchild=NULL; narr[i]=p; if(i==1) t=p; else { if(i%2==0) narr[i/2]->lchild=p; else narr[i/2]->rchild=p; } } return(t); } void Preorder(struct BTreeNode *BT) { if(BT!=NULL) { printf("%5c", BT->date); Preorder(BT->lchild); Preorder(BT->rchild); }
} void Inorder(struct BTreeNode *BT) { if(BT!=NULL) { Inorder(BT->lchild); printf("%5c", BT->date); Inorder(BT->rchild); }
} void Postorder(struct BTreeNode *BT) { if(BT!=NULL) { Postorder(BT->lchild); Postorder(BT->rchild); printf("%5c", BT->date); }
} void PreorderN(struct BTreeNode *BT) { struct BTreeNode *s[20]; int top=-1; struct BTreeNode *p=BT; while(top!=-1||p!=NULL) { while(p!=NULL) { top++; s[top]=p; printf("%5c",p->date); p=p->lchild; } if(top!=-1) { p=s[top]; top--; p=p->rchild; } } } void InorderN(struct BTreeNode *BT) { struct BTreeNode *s[20]; int top=-1; struct BTreeNode *p=BT; while(top!=-1||p!=NULL) { while(p!=NULL) { top++; s[top]=p; p=p->lchild;
}
if(top!=-1)
{
p=s[top];
top--;
printf("%5c",p->date);
p=p->rchild;
}
}
} void PostorderN(struct BTreeNode *BT) { struct BTreeNode *s[20]; int top=-1,flag=1; struct BTreeNode *p=BT,*q; do{ while(p!=NULL) { top++; s[top]=p; p=p->lchild; }
q=NULL;
flag=1;
while(top!=-1&&flag)
{
p=s[top];
if(p->rchild==q)
{
printf("%5c",p->date);
top--;
q=p;
}
else
{
p=p->rchild;
flag=0;
}
}
}while(top!=-1);
} void main() { TNODE *t; int a; printf("input the number of BTreeNode\n"); scanf("%d",&a); t=creat(a); printf("中序遍历:"); Inorder(t); printf("\n"); InorderN(t); printf("\n"); printf("先序遍历:"); Preorder(t); printf("\n"); PreorderN(t); printf("\n"); printf("后序遍历:"); Postorder(t); printf("\n"); PostorderN(t); printf("\n"); }
## 5、二叉树建立.c
/*********************************************************** 我的信息: * 编程ID ***********************************************************/ void preorder1(bitree *root) { bitree *p,*s[100]; int top=0; p=root; while((p!=NULL)||(top>0)) { while(p!=NULL) (cout<data<<" "; s[++top]=p;// p=p->lchild; } p=s[top--]; p=p->rchild; } } void inorder1(bitree *root) { bitree *p,*s[100]; int top=0; p=root; while((p!=NULL)||(top>0)) { while(p!=NULL) { s[++top]=p;p=p->lchild; } { p=s[top--]; cout<data<<""; p=p->rchild; } } } void postorder1(bitree *root) { bitree *p,*s1[100]; ints2[100],top=0,b; p=root; do { while(p!=NULL) { s1[top]=p;s2[top++]=0; p=p->lchild; } if(top>0) { b=s2[--top]; p=s1[top]; if(b==0) { s1[top]=p; s2[top++]=1; p=p->rchild; } else { cout<data<<" "; p=NULL; } } }while(top>0); } void main() { bitree *root; root=create(); cout<<"先序遍历的结果"<<endl; preorder1(root);cout<<end1; cout<<"中序遍历的结果"<<end1; inorder1(root);cout<<end1; cout<<"后序遍历的结果"<<end1; postorder1(root);cout<<end1; }
## 6、快速排序.c
/*********************************************************** 我的信息: * 编程ID ***********************************************************/ #include<stdio.h> void quicksort(int a[],int start,int end) { int i,j; int mid; if(start>=end) return; i=start; j=end; mid=a[i]; while(i<j) { while(i<j&&a[j]>mid) j--; if(i<j) { a[i]=a[j]; i++; } while(i<j&&a[i]<=mid) i++; if(i<j) { a[j]=a[i]; j--; } } a[i]=mid; quicksort(a,start,i-1); quicksort(a,i+1,end); } void scan(int a[],int n) { int i; for(i=1;i<=n;i++) { scanf("%d",&a[i]); } } void print(int a[],int n) { int i; for(i=1;i<=n;i++) { printf("%5d",a[i]); } } void main() { int a[1000]; int s; int start=1,end; printf("输入数组长度:"); scanf("%d",&s); end=s; scan(a,s); quicksort(a,start,end); print(a,s); }
## 7、括号匹配.c
/*********************************************************** 我的信息: * 编程ID ***********************************************************/ #include <stdio.h> #include <stdlib.h> #include<conio.h> struct node { char date; struct node *next; }; struct node *top; void push (char x) { struct node *p; p=(struct node *)malloc(sizeof(struct node)); p->date=x; p->next=top; top=p; } char pop() { struct node *p; char x; if (top==NULL) printf("栈下溢错误!\n"); p=top; x=p->date; top=top->next; free(p); return(x); } void main() { char x,y; printf("括号匹配,请输入括号:\n"); scanf("%c",&x); while(x!='\n') { if(x=='('||x=='['||x=='{') { push(x); scanf("%c",&x); } if(x==')'||x==']'||x=='}') { if (top==NULL) { printf("不匹配!\n"); exit(1); } y=pop(); if((y=='('&&x==')')||(y=='['&&x==']')||(y=='{'&&x=='}')) { scanf("%c",&x); } else { printf("不匹配!\n"); exit(0); } }
}
if (top!=NULL)
{
printf("不匹配!\n");
exit(1);
}
printf("括号匹配成功!\n");
}
## 8、冒泡排序.c
/*********************************************************** 我的信息: * 编程ID ***********************************************************/ #include<stdio.h> void bsort(int a[],int n) { int temp; int i,j,flag; for(j=1;j<=n-1;j++) { flag=0; for(i=1;i<=n-j;i++) if(a[i]>a[i+1]) { flag=1; temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } if(flag==0)break; } } void scan(int a[],int n) { int i; for(i=1;i<=n;i++) { scanf("%d",&a[i]); } } void print(int a[],int n) { int i; for(i=1;i<=n;i++) { printf("%5d",a[i]); } } void main() { int a[1000]; int s; printf("输入数组长度:"); scanf("%d",&s); scan(a,s); bsort(a,s); print(a,s); }
## 9、直接插入排序.c
专业技能
一般来说,面试官会根据你的简历内容去提问,但是技术基础还有需要自己去准备分类,形成自己的知识体系的。简单列一下我自己遇到的一些题
-
HTML+CSS
-
JavaScript
-
前端框架
-
前端性能优化
-
前端监控
-
模块化+项目构建
-
代码管理
-
信息安全
-
网络协议
-
浏览器
-
算法与数据结构
-
团队管理
最近得空把之前遇到的面试题做了一个整理,包括我本人自己去面试遇到的,还有其他人员去面试遇到的,还有网上刷到的,我都统一的整理了一下,希望对大家有用。
其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器等等
由于文章篇幅有限,仅展示部分内容