JAVA筆試

1、去除字符串兩端的空格,不能用字符串的相關函數,除了(charAt()以及getBytes()等)
JDK6中時這樣寫的:
 2705       public String trim() {
 2706           int len = count;
 2707           int st = 0;
 2708           int off = offset;      /* avoid getfield opcode */
 2709           char[] val = value;    /* avoid getfield opcode */
 2710  
 2711           while ((st < len) && (val[off + st] <= ' ')) {
 2712               st++;
 2713           }
 2714           while ((st < len) && (val[off + len - 1] <= ' ')) {
 2715               len--;
 2716           }
 2717           return ((st > 0) || (len < count)) ? substring(st, len) : this;
 2718       }
但是這裏使用了substring函數。
空格的ASCII是32
這麼簡單,我寫了半天。不過題意還是有不明之處。
2、判斷線段是否相交。這個是算法的問題,想法越多,解法就越多。總之,難而);
利用矢量的叉乘爲0的條件即可: 
   
  double  dx1   =   x2   -   x1;  
  float   dy1   =   y2   -   y1;  
  float   dx2   =   x4   -   x3;  
  float   dy2   =   y4   -   y3;  
  float   dd   =   dx1   *   dy2   -   dy1   *   dx2;   //   叉乘  
  bool   bIntersect   =   !(dd   >   -0.000001   &&   dd   <   +0.000001);

3、int exp = ((byte)(-1))&12345;A:12345;
byte:是 8位,即1個字節。但12345是int所以,結果還是轉成int了,8位的-1轉成int還是-1,即4個字節全是1,那最終結果還是12345咯。^_^,可惜我沒做對。
4、int fun1(int i){return i<100?i:fun1(i/100)+i%100;} int exp = fun1(101010);
遞歸的問題,我很討厭它。
第一次執行後:i=1010,然後把整fun1(1010)送入棧當中。
第二次執行後:i=10,然後把fun1(10)送入棧當中。
遞歸的問題就是要按照原路返回。
好,現在開始返回了,初次返回值爲10,好與上一次的i%100=10相加結果等於20;
再次返回到fun1(1010),i%100還是10,再次相加等於30;
最終退出了哈。
A:30
其實這個遞歸都很簡單了哦,如果多重遞歸,絕對讓我當場沸騰了。
5、int exp = 0X4321>>8<<8;
A:0x4300。我的問題出在一個數當做8位了。謹記一個數佔4位。
5、靜態構造器的問題。
6、名詞解釋:MIDH、python。
7、判斷區別題,都很簡單的了哦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章