安卓工程師筆試--2015--波導公司,安卓--2015--

來源:互聯網
上載者:User

安卓工程師筆試--2015--波導公司,安卓--2015--

1.在微電腦中,採用中斷方式的優點之一是(C)

 

2.下列哪一項資料J2ME中所使用的虛擬機器類型(C)

A.JVM  (java虛擬機器)

B.DVM

C.CVM(or KVM)

D.Card VM

 

3.下列不屬於CLDC1.1核心類庫與J2SE核心類庫的主要區別是:(A)

A..不支援線程組或守護線程 

B.不支援浮點數據類型 

C.不支援弱引用 

D.有限的錯誤處理

 

4. 下列哪一個程式片段是在鏈表中間插入一個結點。(假設新結點為NEW,欲插入在 Pointer結點之後)(C) 

A.NEW->next=Pointer ;   Pointer=NEW        

B.NEW->next=Pointer->next ;  Pointer->next=NEW 

C.Pointer->next=NEW->next;  NEW->next=Pointer  

D.以上皆非

 

5.關於abstract抽象類別描述正確的是:(A)

A.不能產生抽象的建構函式 

B.可以產生抽象的static方法 

C.允許產生private的抽象方法

D.以上描述都對  

 

6.一張png格式的圖片檔案a.png,圖片寬70像素,高20像素,被用來建立Spirte,程式如下,下面描述正確的是:D

Image img;

try{ img = Image.createImage("/a.png");

}catch(Exception e){}

Sprite sprite = new Sprite(img,20,20); 

A.圖片被按照每塊寬20像素,高20像素的比例分割成三個畫面 

B.圖片被按照每塊寬20像素,高20像素的比例分割出一個畫面 

C.圖片被該Sprite所使用,並將該Sprite的映像描繪到螢幕座標(20,20)的位置上。

 D.出現異常 

 

7.下列方法中哪一個方法能實現在螢幕上描繪出一條虛線(其他部分程式碼省略

 public void paint(Graphics g) 

g.setColor(255,255,255);

 g.fillRect(0,0, getWidth(), getHeight());

/* 程式碼片段A */

 g.setColor(255,0,0);

g.drawLine(20, 20, 100,20);

 /* 程式碼片段B */

 g.setColor(125, 125,125);

 g.drawLine(20,25,100,50);

 g.setStrokeStyle(Graphics.SOLID);

/* 程式碼片段C */ 

g.setColor(125, 125,125); 

g.drawLine(20,30,100,50);

 g.setStrokeStyle(Graphics.DOTTED);

/* 程式碼片段D */ 

g.setColor(255,255,255); 

g.drawLine(20,50,100,50); }

  A.程式碼片段A  B.程式碼片段B  C.程式碼片段C  D.程式碼片段D 

答案:C 

 

8. 藍芽和802.11b技術都屬於短程通訊技術,以下描述錯誤的是: ( D ) 

A. 藍芽和802.11b都是無線技術,並且都選用了2.4GHz的頻譜 

B. 802.11b主要是用來串連耗電的大型裝置,如個人電腦及手提電腦等 

C. 藍芽主要是用來串連耗電極小的小型裝置,如PDA和手機等等 

D. 藍芽技術的資料交流的速度達到11Mb/s,距離可達100米

 

9.以下是一個利用Timer類和TimerTask類實現線程的一個例子(其餘代碼和類的設計省略),判斷下面代碼能實現什麼功能:(B )

      

       Timer timer = new Timer(); //產生一個Timer類的對象

       timerTask tT = new timerTask() ; //該類繼承了TimerTask類

       timer.schedule(tT, 100, 1000);

 

A. 程式啟動後等待1秒以後,每隔100毫秒運行一次TimerTask類的run()方法

B. 程式啟動後等待100毫秒以後,每隔1秒運行一次TimerTask類的run()方法

C. 程式啟動後等待10秒以後,每隔1000毫秒運行一次TimerTask類的run()方法

D. 程式啟動後等待1秒以後,每隔10秒運行一次TimerTask類的run()方法

 

10. 下列有關J2SE中有關方法的使用書寫正確的是__C__ 

A.g.getFont("SansSerif"); 用於擷取當前字型,不能帶參數

 B.g.erase(x,y,w,h); //清除位於(x,y)點的矩形

 C.Font f = new Font("serif",Font.BOLD,12);  

D.g.setColor(Color.Yellow); //將使用中色彩設定為黃色 

 

11. J2ME體系架構包括  B

 A.Java語言、Java編輯器、Java虛擬機器 

B.Configuration、Profile、可選包 

C.CLDC 、MIDP 、WMA 

D.CDC 、Profile、可選包

 

12.在Java中,建立線程的方法有(B D)多選

A.實現Run介面

B.實現Runnable介面

C.繼承Pocess類,實現run()方法

D.繼承Thread類,實現run()方法

 

13.D

 

14. 在MIDP中,代碼的同步主要包括如下哪些方法?( BC)  

 A.使用全域變數 

B.使用callSerially方法 

C.使用synchronized關鍵字,包括對單獨的語句或者整個方法或者對象

D.使用servicePaint方法

 

15. 作業系統具有進程管理、儲存管理、檔案管理和裝置管理的功能,在以下有關的描述中,哪一個是不正確的? (A )。
A.進程管理主要是對程式進行管理
B.儲存管理主要管理記憶體資源
C.檔案管理可以有效地支援對檔案的操作,解決檔案的共用、保密和保護問題
D.裝置管理是指電腦系統中除了CPU和記憶體以外的所有輸入輸出裝置的管理

 

二、簡答題

1.什麼是同步和非同步;兩者有何異同,舉例說明應用場合。5分

1如果資料將線上程間共用。例如正在寫的資料以後可能被另一個線程讀到,或者正在讀的資料可能已經被另一個線程寫過了,那麼這些資料就是共用資料,必須進行同步存取。

當應用程式在對象上調用了一個需要花費很長時間來執行的方法,並且不希望讓程式等待方法的返回時,就應該使用非同步編程,在很多情況下採用非同步途徑往往更有效率。

 

 

2.Android常用的五種布局,並簡單說明這幾種常用布局的特點。10分

2第二題 ,五種布局

一、FrameLayout

這個布局可以看成是牆腳堆東西,有一個四方的矩形的左上方牆腳,我們放了第一個東西,要再放一個,那就在放在原來放的位置的上面,這樣依次的放,會蓋住原來的東西。這個布局比較簡單,也只能放一點比較簡單的東西。

 

二、 LinearLayout

線性布局,這個東西,從外框上可以理解為一個div,他首先是一個一個從上往下羅列在螢幕上。每一個LinearLayout裡面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal")。當垂直布局時,每一行就只有一個元素,多個元素依次垂直往下;水平布局時,只有一行,每一個元素依次向右排列。linearLayout中有一個重要的屬性android:layout_weight="1",這個weight在垂直布局時,代表行距;水平的時候代表列寬;weight值越大就越大。

 

三、AbsoluteLayout

絕對布局猶如div指定了absolute屬性,用X,Y座標來指定元素的位置android:layout_x="20px"

android:layout_y="12px" 這種布局方式也比較簡單,但是在垂直隨便切換時,往往會出問題,而且多個元素的時候,計算比較麻煩。

 

四、RelativeLayout

相對布局可以理解為某一個元素為參照物,來定位的布局方式。主要屬性有:

相對於某一個元素

android:layout_below="@id/aaa" 該元素在 id為aaa的下面

android:layout_toLeftOf="@id[便便]b" 該元素的左邊是bbb

相對於父元素的地方

android:layout_alignParentLeft="true"  在父元素靠左對齊

android:layout_alignParentRight="true"在父元素靠右對齊,還可以指定邊距等,具體詳見API

 

五、TableLayout

表格版面配置類似Html裡面的Table。每一個TableLayout裡面有表格行TableRow,TableRow裡面可以具體定義每一個元素,設定他的對齊android:gravity="" 。

每一個布局都有自己適合的方式,另外,這五個布局元素可以相互嵌套應用,做出美觀的介面。

 

 

3.請寫出BOOL flag 與“零值”比較的if語句;請寫出float  x 與“零值”比較的if語句;請寫出char *p與“零值”比較的if語句;5分

BOOL 的 if(!var) ... 和 if(var)...

float的 if( (var >= - EPS) && (var <= EPS) )... 和 if ( var >= EPS || var <= -EPS)

char*的 if(var == NULL )... 和 if(var != NULL )...

 

 

4.記憶體配置地區有幾類,並簡單說明各個記憶體地區的功能;10分

1、程式計數器

    每個線程都擁有一個獨立的程式計數器,用於記錄當前線程所要執行的位元組碼指令,該類記憶體地區為“線程私人”記憶體。

2、虛擬機器棧

   主要負責方法執行的記憶體部分,在每個方法執行時都會建立一個棧針儲存局部變數,運算元等方法相關資訊,每一次方法的調用到完成,都對應一個棧針在虛擬機器棧中出入棧的過程。

3、本地方法棧

    和虛擬機器棧類似,只是負責本地Native方法,也會拋出stackOverFlowError和OutOfMemoryError錯誤。

4、JAVA堆(JAVA Heap),GC堆

   主要存放對象執行個體,可以通過配置,設定不同代的大小和記憶體回收策略,很多最佳化也在堆上進行實現。

5、方法區(Method Area),非堆,永久代

   主要儲存虛擬機器載入的類資訊,常量,靜態變數等

6、直接記憶體

    直接記憶體沒有在圖中顯示,以為他並不是虛擬機器運行時資料區的一部分,不歸虛擬機器管理,

 

 

5.用圖示或文字簡單說明Android系統的架構。5分

Android的系統架構和其作業系統一樣,採用了分層的架構。從架構圖看,android分為四個層,從高層到低層分別是應用程式層、應用程式架構層、系統運行庫層和linux核心層。

 

 

6.Java記憶體回收的優點和原理,並考慮兩種回收機制。5分

.程式可以用System.gc()或Runtime.getRuntime().gc()請求記憶體回收,工作原理: 引用計數,標記複製

記憶體回收機制的優缺點:Java的記憶體回收機制是的程式員不用擔心記憶體空間的分配,減少了記憶體溢出.但同時也犧牲了一定的效能.

 

 

7.Android中Activity,Intent,ContentProvider,Servide各自訂及特點。5分

Activity: 活動。一個活動就是一個使用者可以操作的可視化使用者介面,每一個活動都被實現為一個獨立的類,並且從活動基類繼承而來。

Intent: 意圖。最重要的部分是動作和動作對應的資料。

Content Provider:內容提供器,android應用程式能夠將它們的資料儲存到檔案、SQLite資料庫中,甚至是任何有效裝置中。當你想將你的應用資料和其他應用共用時,內容提供器就可以發揮作用了。

Service:服務,具有一段較長生命週期且沒有使用者介面的程式組件。

 

 

8.什麼是Java序列化,序列化的優缺點,如何?。5分

8序列化就是一種用來處理物件流程的機制,所謂物件流程也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。

序列化的實現:將需要被序列化的類實現Serializable介面,該介面沒有需要實現的方法,implementsSerializable只是為了標註該對象是可被序列化的,然後使用一個輸出資料流(如:FileOutputStream)來構造一個ObjectOutputStream(物件流程)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即儲存其狀態),要恢複的話則用輸入資料流。

 

 

9. 下列程式的輸出結果是___C___。 int t(int x,int y,intcp,int dp) { cp=x*X+y*y; dp=x*x-y*y; } main() { int a=4,b=3,c=5,d=6: t(a,b,c,d); printf("%d%d\n" ,c,d);

A.4 5

B.4 6

C.5 6

D.5 5

 

 

10中斷是嵌入式系統中重要的組成部分,這導致了很多編譯開發商提供一種擴充 ―讓標準 C支援中斷。具代表事實是,產生了一個新的關鍵字__interrupt,下面的代碼就使用了 __interrupt關鍵字去定義了一個中斷服務子程式 (ISR),請評論一下這段代碼,找出錯誤並改正.請指出問題點:

 __interruptdouble compute_area (double radius)

{

double area = PI * radius * radius;

//printf(" Area = %f", area);

return area;

}

1、ISR不能傳遞參數,必須用void;

2、ISR應該是短而高效的,所以不推薦在ISR中做浮點運算,應該只由中斷髮出訊息或置位標誌然後由應用程式層去處理其他工作;

3、ISR中不應該有重入和效能上的問題,因此使用pintf()函數也是不好的

 

 

11.如何用兩個棧實現一個隊列的功能?要求給出演算法和思路。10分

 

#include <iostream>

#include <stack>

 

class TMyQueue

{

private:

        stack<char> s1,s2;

public:

        void push(char c)

        {

                while (!s2.empty())

                {

                        char x = s2.top();

                        s2.pop();

                        s1.push(x);

                }

                s1.push( c );

        }

        char pop()

        {

                char c;

                while (!s1.empty())

                {

                        char x = s1.top();

                        s1.pop();

                        s2.push(x);

                }

                c = s2.top();

                s2.pop();

                return c;

        }

        bool empty() const

        {

                return s1.empty() && s2.empty();

        }

};

 

int main()

{

        TMyQueue q;

        int i;

        char buf1[4] = "one";

        char buf2[4] = "two";

        char buf3[6] = "three";

        for (i = 0; i < 3; i++)

                q.push(buf1[i]);

        for (i = 0; i < 3; i++)

                q.push(buf2[i]);

        for (i = 0; i < 3; i++)

                cout << q.pop();

        cout << endl;

        for (i = 0; i < 5; i++)

                q.push(buf3[i]);

        while (!q.empty())

        {

                cout << q.pop();

        }

        cout << endl;

        return 0;

}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.