做过的面试题

大部分搞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解析,面试官会问你是因为他们从网上找过,如果第一次遇到,他未必能做出来。

这篇文章可以给的提示。

http://news.newhua.com/news1/program_language/2008/825/08825154727F1FEG5I45HH1J4B3H0J2198EK3A1IC11341FAB337G5CG.html

和minixml有点类似。

http://www.minixml.org/documentation.php/basics.html

找到有类似经历的人。

http://blog.csdn.net/ghevinn/article/details/7904356

原文地址:https://www.cnblogs.com/javastart/p/2833068.html