做过的面试题
大部分搞it的编码水平都很烂,包括我,也包括面试官。
但面试官总喜欢从网上找一些题来考察面试者,希望来衡量面试者水平。
所以聪明的你如果准备去面试,那就先从网上找一些面试题,同时也把答案背一背。
1.实现strlen函数
2.实现折半查找
3.用c++实现一个单体类
4.两个字符串str1,str2,请用c/c++实现提取两者的最大公共子串
5.用c/c++实现简单xml的解析
输入是xml文件,输出是便于调试方便用的数据结构。
1.字符串函数的实现一般会考的很多。
例如:strlen,strcpy,reverse,itoa,atoi。
strlen
1 int strlen(const char *str) 2 { 3 assert(str); 4 const char *p = str; 5 while(*p++); 6 return p -str -1; 7 }
strcpy
1 char * strcpy( char *strDest, const char *strSrc ) 2 { 3 assert( (strDest != NULL) && (strSrc != NULL) ); 4 char *address = strDest; 5 while( (*strDest++ = * strSrc++) != '\0'); 6 return address; 7 }
http://blog.csdn.net/shiren_bod/article/details/6620891
2.冒泡,二分,快排等就背一背吧
BubbleSort
1 void BubbleSort(elemtype x[],int n) 2 { 3 int i,j; 4 elemtype temp; 5 for(i=1;i<n;i++) 6 for(j=0;j<n-i;j++) 7 { 8 if(x[j].key>x[j+1].key) 9 { 10 temp=x[j]; 11 x[j]=x[j+1]; 12 x[j+1]=temp; 13 } 14 } 15 }
BSearch
1 int BSearch(elemtype a[],keytype key,int n) 2 { 3 int low,high,mid; 4 low=0;high=n-1; 5 while(low<=high) 6 { 7 mid=(low+high)/2; 8 if(a[mid].key==key) return mid; 9 else if(a[mid].key<key) low=mid+1; 10 else high=mid-1; 11 } 12 return -1; 13 }
quick_sort
1 void qs(int begin,int end) 2 { 3 int compare=a[begin], left =begin,right = end; 4 if(left >right) 5 return; 6 while (left <right) 7 { 8 while ((left <right) && a[right]>=compare) 9 right--; 10 //a[left] = a[right]; 11 swap(a[left],a[right]); 12 while ((left <right) &&(a[left] <compare)) 13 left++; 14 //a[right] = a[left]; 15 swap(a[right],a[left]); 16 } 17 a[right] = a[left]; 18 qs(begin,right-1); 19 qs(right+1,end); 20 }
3.
4.链表,最大公共子串等
reverse
1 struct linka { 2 int data; 3 struct linka* next; 4 }; 5 6 void reverse(linka*& head) { 7 if(head ==NULL) 8 return; 9 linka *pre, *cur, *ne; 10 pre=head; 11 cur=head->next; 12 while(cur) 13 { 14 ne = cur->next; 15 cur->next = pre; 16 pre = cur; 17 cur = ne; 18 } 19 head->next = NULL; 20 head = pre; 21 }
最大公共子串(实用):
commadnstring
1 char *commanstring(char shortstring[], char longstring[]) 2 { 3 int i, j; 4 char *substring=malloc(256); 5 if(strstr(longstring, shortstring)!=NULL) //如果……,那么返回shortstring 6 return shortstring; 7 for(i=strlen(shortstring)-1;i>0; i–) //否则,开始循环计算 8 { 9 for(j=0; j<=strlen(shortstring)-i; j++){ 10 memcpy(substring, &shortstring[j], i); 11 substring[i]='\0'; 12 if(strstr(longstring, substring)!=NULL) 13 return substring; 14 } 15 } 16 return NULL; 17 }
最大公共子串(还有很多讲算法的):
http://blog.csdn.net/hackbuteer1/article/details/6686925
5.实现xml解析,面试官会问你是因为他们从网上找过,如果第一次遇到,他未必能做出来。
这篇文章可以给的提示。
和minixml有点类似。
http://www.minixml.org/documentation.php/basics.html
找到有类似经历的人。