當前位置:學問君>學習教育>考研>

北京中軟常見筆試題目

學問君 人氣:3.2W

1.不許用中間變量,把String ABCDE 倒轉
2.10000個數求第2大的數,不許用排序算法.
3.排序算法的測試用例
我的答案:
1.
1. include "stdafx.h"
1. include <iostream>
1. include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
 char *ps = new char[15];
 strcpy_s(ps,15,"I am yuchifang");
 cout<<"before reverse:"<<endl;
 cout<<ps<<endl;
 int i = 0;
 int j = 13;
 while(i<j)
 {
 ps[i] = ps[i]+ps[j];
 ps[j] = ps[i]-ps[j];
 ps[i] = ps[i]-ps[j];
 i++;
 j--;
 }
 cout<<"after reverse"<<endl;
 cout<<ps<<endl;
 return 0;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
這是我在中軟國際面試的一些題目,看你會嗎?
1、Java中的屬性和字段有什麼區別? --這個是當時考我的一道題,我不會啊!!!!!!!!!
2、C/C++你更熟悉那個?C++中的虛函數用在什麼地方?JAVA中的虛函數呢?(我沒記得Java中還有這個)
3、你對數據庫中存儲過程瞭解多少?說說。
4、假如微軟給你500萬美元項目經費,你怎麼利用它?
5、你對考研是什麼態度?
6、你對加班是什麼態度? 這個答案項目經理說出來後我感覺太現實了,你猜他怎麼說的?和IT人有關的
7、Why do you …… ICS&S? (我忘具體怎麼說的`了,大意就是問你爲何要來中軟國際?人家可是用全英語問的,說的挺快的,幸好我聽懂一點)

北京中軟常見筆試題目

問題太多了,大多是技術問題,不過都和知識要點有關,不考太難的太複雜的,不過我還是大部分不會啊!!!英語會讓你就自己喜歡的方向作簡介呢。難,要我說就完了。
  先想出這多了,下次再寫,技術問題好多,有空把筆試題給大家看看,唉!
、、、、、、、、、、、、、、、、、、、、、、
題目爲寫算法生成隨機4位數,要求每位數字不同.
Solution:
有個隱含條件,即第一個數字不能爲0.  以下是我初步的javascript解法:
function rand4(){
  var arr = new Array();
  var index = 0;
  var tempNum;
  while(index<4){
  tempNum = d(om()*9);
  if(!(index==0 && tempNum==0)){
   //hold point
    if(arr[tempNum]== null){
     arr[tempNum] = tempNum;
     ++index;
    }
   }
  }
  var ret = 0;
   for(var i in arr){
   if (ret != 0){
    ret *= 10;
  }
   ret += parseInt(i);
  }   alert(ret);
  return ret;
}
  我相信會編程的人都會寫出這個算法. 基本上是很普通的.這個算法有個不愉快的地方就是hold point那塊,成功率爲100%(第一次),90%(第二次),80%(第三次),70%(第四次),越來越低,不過只要不低於50%,程序效率還不會打折扣.

以下是我的第二種寫法,用空間換了點時間,用C++語言寫的:
1. include <iostream>
1. include <stdlib.h>
using namespace std;
class Rand4{
  private:
    int a[10];
    int getNum(int index){
      while(a[index]==-1){
        ++index;
        index %= 10;
     }
      int ret = a[index];
       a[index] = -1;
       return ret;
     };
    void init(){
     for(int i=0;i<10;++i){
        a[i] = i;
      }
     };
  public:
     int Next(){
      init();
      int ret = (rand()%10) *1000;
      int index = 100;
      int time = 3;
      while(time>0){
       ret += getNum((rand()%10))*index;
       index /= 10;
       --time;
     }
      return ret;
     };
};
int main(int argc, char *argv[])
{
 Rand4 r4;
 cout<<()<<endl;
 cout<<()<<endl;
 cout<<()<<endl;
 system("PAUSE");
 return 0;
}

此法的時間複雜度爲正宗的O(n),空間開銷(不包含調用庫函數的)就比前一個例子多了些.

此法在n取m的隨機計算中,m從0一直到趨近於n, 效率都是不變的.

其他的高效方法暫時還沒有想出.