招生熱線
0755-86191118 0755-86191118
我的位置: 首頁 > 學(xué)習(xí)專區(qū) > 安卓技術(shù) > 應(yīng)聘Android開發(fā)工程師-Java筆試部分

應(yīng)聘Android開發(fā)工程師-Java筆試部分

2012-04-17 11:40:00
來源:
[導(dǎo)讀] 1:本試卷為高難度試題,大部分摘自華為,中興,騰訊,百度,阿里巴巴等試題2:知識點(diǎn)涵蓋Java基礎(chǔ),面向?qū)ο?,異常,多線程,輸入輸出流,

1:本試卷為高難度試題,大部分摘自華為,中興,騰訊,百度,阿里巴巴等試題

2:知識點(diǎn)涵蓋Java基礎(chǔ),面向?qū)ο?,異常,多線程,輸入輸出流,集合,數(shù)據(jù)結(jié)構(gòu)與算法

3:注意本試卷分滿分為100分,60分為及格分?jǐn)?shù)線

4:本試卷分為以下部分:選擇題,簡答題,改錯(cuò)與分析題,編程算法題

5:本試卷時(shí)間為100分鐘,請抓緊時(shí)間做題

一:選擇題【有四個(gè)選項(xiàng),只有一個(gè)選項(xiàng)正確,每道題1.5分,共20道,總計(jì)30分】

【 】1:下面的表達(dá)式錯(cuò)誤的是

A: float f=(1.9 + 0.1)/(int)1.0

B: float f=1.0F

C: float f=(float)1.0F

D: float f=(int)(0.73+0.27);

【 】2:設(shè)x和y均為int型變量,則以下語句:x+=y,y=x-y;x-=y;的功能是

A:把x和y按從大到小排列

B:把x和y按從小到大排列

C:無確定結(jié)果

D:交換x和y中的值

【 】3:請寫出下面程序運(yùn)行的結(jié)果()

int x = 0;

int y = 1;

int a = x++ + ++x;

int b = y– – –y;

System.out.println(++a + b++);

A:3 B:4 C:5 D:6

【 】4:選擇下列程序運(yùn)行的結(jié)果

int total = 0;

for (int i = 0, j = 5; total < 10 || j > 3; ++i, –j) {

total += (i + j);

System.out.println(total );

}

A:結(jié)果為 5 ,因?yàn)橐粋€(gè)i自加,一個(gè)j自減抵消等于沒有自加

B:結(jié)果為 10,因?yàn)檎_\(yùn)算了

C:有語法錯(cuò)誤,不能寫多個(gè)變量

D:有語法錯(cuò)誤,條件表達(dá)式不能寫多個(gè)

【 】5:請問總共創(chuàng)建了多少個(gè)對象?

String aa,b,c;

aa=”bb”;

b=”dd”+aa;

c=”cc”+b+aa;

StringBuffer d = new StringBuffer(c);

A: 4 B: 5 C: 7 D: 8

【 】6:接口A中有2個(gè)方法,接口B中有2個(gè)方法,以下正確的是 ( )

A:若接口C繼承A,B兩個(gè)接口,則C一定繼承了四個(gè)方法

B:若類C實(shí)現(xiàn)接口A,B,則C中必須至少實(shí)現(xiàn)A、B中各一個(gè)方法

C:若類C要繼承接口A,B,則必須要定義接口D來繼承接口A、B,由類C實(shí)現(xiàn)接口D,才能達(dá)到目的

D:若抽象的接口C繼承了接口A,B;抽象的D類實(shí)現(xiàn)C接口,此時(shí)必須要實(shí)現(xiàn)累加接口中的所有方法

【 】7:關(guān)于類,抽象,接口,繼承綜合說法錯(cuò)誤的是?

A:類與類之間有關(guān)聯(lián),繼承,聚合的關(guān)系;

B:抽象類可以繼承實(shí)例類,抽象類可以實(shí)現(xiàn)接口,抽象接口可以繼承多個(gè)接口

C:抽象類是類和接口的并集與接口繼承的補(bǔ)集

D:在應(yīng)用開發(fā)中,功能類的繼承是平行結(jié)構(gòu),實(shí)現(xiàn)功能的接口是樹型結(jié)構(gòu)

【 】8:請判斷下面程序運(yùn)行的結(jié)果:

public class ParamTest {

int num = 1;

public void change() {

num = 2;

}

public void change(int num) {

num = 3;

}

public void change(ParamTest pt) {

pt.num = 4;

}

public static void main(String[] args) {

ParamTest pt = new ParamTest();

int num = 5;

pt.change();

System.out.println(“1->:” + pt.num);

pt.change(num);

System.out.println(“2->:” + pt.num);

pt.change(pt);

System.out.println(“3->:” + pt.num);

}

A: B: C: D:

1->:1 1->:2 1->:2 1->:2

2->:5 2->:5 2->:2 2->:5

3->:4 2->:5 3->:4 3->:4

【 】9:下面方法不可以共存的是:()

已知:

class A {

public A() {

}

public void A() {

}

public void A(int x) {

}

}

class B extends A {

//填入一個(gè)方法

}

A:public void A(){}

B:public void A(int x, int y) {}

C:public int A(int x, char y) {

return x + y;

}

D:public String A(int x){

return “hello”+x;

}

【 】10:已知類Foo的定義如下:

>public class Foo {

int value;

Foo(int value) {

this.value = value;

}

}

運(yùn)行下面程序段:

Foo[] a1 = { new Foo(1), new Foo(2), new Foo(3) };

Foo[] a2 = new Foo[a1.length];

System.arraycopy(a1, 0, a2, 0, a1.length);

System.out.println((a1 == a2) + “,” + (a1[1] == a2[1]));

控制臺輸出的結(jié)果是( )。

A. false,false B. false,true C. true,true D. true,false

【 】11:哪種說話闡明了垃圾收集和終結(jié)化機(jī)制鎖承諾的行為?()

A 對象直到?jīng)]有任何引用指向自己時(shí)才會立即被銷毀

B 對一個(gè)對象調(diào)用的finalize()方法永遠(yuǎn)不會多于一次

C 適用于收集的對象會最終由垃圾收集器銷毀

D 對象一但適用于垃圾收集,就再無法由存活線程訪問了

【 】12:下面執(zhí)行的結(jié)果是

static boolean loop(char c) {

System.out.print(c);

return true;

}

public static void main(String[] args) {

int i = 0;

for (loop(‘A’); loop(‘B’) && (i < 2); loop(‘C’)) {

i++;

loop(‘D’);

}

}

A. ABDCBDCB

B. ABCDABCD

C. Compilation fails[編譯失敗].

D. An exception is thrown at runtime[拋出一個(gè)運(yùn)行例外].

【 】13:下面異常執(zhí)行的結(jié)果是:

try {

int x = 0;

float y = 0;

float z = x / y;

System.out.println(“11″);

try {

int a[] = new int[3];

a[3] = x;

System.out.println(“22″);

return;

} catch (Exception e) {

System.out.println(“33″);

return;

} finally {

System.out.println(“44″);

System.exit(0);

return;

}

} catch (ArithmeticException e) {

System.out.println(“55″);

return;

} finally {

System.out.println(“66″);

return;

}

A: B: C: D:

11 55 11 11

55 66 33 33

66 44 44

66

【 】14:閱讀下面程序段:

byte a[] = { ‘a’, 65, ‘#’, ‘B’ };

byte b[] = new byte[a.length];

System.arraycopy(a, 1, b, 1, 2);

BufferedOutputStream bos;

bos = new BufferedOutputStream(new FileOutputStream(“C:\\file.txt”));

bos.write(b, 1, 2);

bos.flush();

bos.close();

假設(shè)file.txt原先不存在,運(yùn)行該程序段后,文件file.txt的內(nèi)容為( )。

A. 65 B. 65# C. A# D. A

【 】15:假設(shè)以數(shù)組A[n]存放循環(huán)隊(duì)列的元素,其頭、尾指針分別為head和end。若設(shè)定尾指針指向隊(duì)列中的隊(duì)尾元素,頭指針指向隊(duì)列中隊(duì)頭元素的前一個(gè)位置,則當(dāng)前存于隊(duì)列中的元素個(gè)數(shù)為

A:(end-head-1)%n B:(end-head)%n

C:(head-end+1)%n D:(end-head+n)%n

【 】16:對線性鏈表和線性表分析錯(cuò)誤的是()

A:線性鏈表分為單鏈表、雙向鏈表和循環(huán)鏈表

B:線性鏈表是一種物理存儲單元上連續(xù)但非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接來實(shí)現(xiàn)的

C:線性表插入或刪除的運(yùn)算效率很低。在順序存儲的線性表中,插入或刪除數(shù)據(jù)元素時(shí)需要移動(dòng)大量的數(shù)據(jù)元素

D:線性表的順序存儲結(jié)構(gòu)不便于對存儲空間的動(dòng)態(tài)分配

【 】17:以下屬于java.util包中集合類具體實(shí)現(xiàn)類的是?

A:Map B:Collection C:TreeMap D:SortedMap

【 】18:下面對集合不能正確創(chuàng)建實(shí)例化是()

A:List> list = new LinkedList>();

B:ArrayList> list = new ArrayList>();

C:TreeSet> tree=new TreeSet>();

D:TreeSet> tree=new TreeSet>();

【 】19:下面可以刪除list中所有的“java”的代碼是:

ArrayList list = new ArrayList();

list.add(“java”);

list.add(“aaa”);

list.add(“java”);

list.add(“java”);

list.add(“bbb”);

A:

for (int i = list.size() – 1; i >= 0; i–) {

if (“java”.equals(list.get(i))) {

list.remove(i);

}

}

B:

for (int i = 0; i < list.size(); i++) {

if (“java”.equals(list.get(i))) {

list.remove(i);

}

}

C:

Iterator i = list.iterator();

while (i.hasNext()) {

if ((i.next().toString()).equals(“java”)) {

i.removeAll();

}

}

D:

Iterator i = list.listIterator();

while (i.hasNext()) {

if (((String) i.next()).equals(“Java”))

i.remove();

}

}

【 】20:題示代碼的功能為:將兩個(gè)有序的ArrayList合并為一個(gè)有序的ArrayList。

對于兩個(gè)存放Integer對象的ArrayList,

內(nèi)容分別為:list1:{1,3,4,6,8} 和 list2:{2,5,9}

合并后的list3: {1,2,3,4,5,6,8,9}

……

List list3 = new ArrayList();

int size = list1.size() + list2.size();

for (int i = 0, j = 0, k = 0; k < size; k++) {

< 填入的代碼 >

}

System.out.println(list3);

……

完成該功能應(yīng)該填入的代碼是( )。

A.

if (j >= list2.size() || i > list1.size():&& list1.get(i) < list2.get(j)) {

list3.add(list1.get(i++));

} else {

list3.add(list2.get(j++));

}

B.

if (j >= list2.size() || i < list1.size()&& list1.get(i) < list2.get(j)) {

list3.add(list1.get(i++));

} else {

list3.add(list2.get(j++));

}

C.

if (j >= list2.size() || i < list1.size()&& list1.get(i) > list2.get(j)) {

list3.add(list1.get(i++));

} else {

list3.add(list2.get(j++));

}

D.

if (j >= list2.size() || i < list1.size()|| list1.get(i) < list2.get(j)) {

list3.add(list1.get(i++));

} else {

list3.add(list2.get(j++));

}

二:簡答題【本環(huán)節(jié)中每道題3分,共5道,總計(jì)15分】

1:String 和StringBuffer有什么差別?在什么情況下使用它們?【3分】

答:

2:new一個(gè)類對象和使用類名創(chuàng)建一個(gè)對象有什么區(qū)別?二者使用時(shí)應(yīng)該注意什么?【3分】

答:

3:在異常當(dāng)中 throw和throws 有什么區(qū)別和聯(lián)系?【3分】

答:

4:LinkList和ArrayList的區(qū)別?

如果是在集合的開頭插入一個(gè)對象,使用哪種效率高些,在集合的末尾插入一個(gè)對象,使用哪種效率高些,為什么?【3分】

5:

介紹JAVA開發(fā)中常用的Collection FrameWork(寫出Java集合的框架結(jié)構(gòu),加上必要的名稱注釋)? 【3分】

答:

三:改錯(cuò)與分析題【本環(huán)節(jié)中每道題3分,共7道,總計(jì)21分】

<第一題>

interface A{

int x = 0;

}

class B{

int x =1;

}

class C extends B implements A {

public void pX(){

System.out.println(x);

}

public static void main(String[] args) {

new C().pX();

}

}

請問哪一行有錯(cuò)?為什么?【3分】

答:

< 第二題>

abstract class Animal {

public void saySomething() {

System.out.println(“你想說什么就說吧!”);

}

}

class Dog extends Animal {

public void saySomething() {

System.out.println(“我現(xiàn)在有了第二職業(yè):捉耗”);

}

}

public class Test {

public static void main (String[] args) {

Animal ani=new Dog();

ani.saySomething();

}

}

請問哪一行有錯(cuò)?為什么?【3分】

答:

<第三題>

public class Test {

private static void printArray(int[] arr) {

for(int i=0;i< arr.length;i++)

System.out.print(arr[i]+”,”);

System.out.println(” “);

}

private static void changeValue(int value) {

value*=2;

}

private static void changeValue(int[] arr) {

for(int i=0;i

arr[i]*=2;

}

public static void main (String[] args) {

int[] arr={1,2,3,4,5};

changeValue(arr[0]);

printArray(arr);

changeValue(arr);

printArray(arr);

}

}

請問結(jié)果是什么?并詳細(xì)解釋原因【3分】

答:

<第四題>

public class A {

static {

System.out.println(“11″);

}

{

System.out.println(“22″);

}

public A() {

System.out.println(“33″);

}

public void deal() {

System.out.println(“44″);

}

}

public class B extends A {

static {

System.out.println(“55″);

}

{

System.out.println(“66″);

}

public B() {

System.out.println(“77″);

}

public void deal() {

System.out.println(“88″);

}

}

public class C {

public static void main(String[] args) {

A b=new B();

b.deal();

}

}

請問結(jié)果是什么?并詳細(xì)分析原因【3分】

答:

<第五題>

public class Test{

public static void so(String[] name){

String temp=name[0];

Name[0]=name[1];

Name[1]=temp;

}

public static void so(String name0,String name1){

String temp=name0;

Name0=name1;

Name1=temp;’

}

public static void main(String[] wewe){

String[] name = new String[]{“mike”,”Lily”};

String name0 = “mike”;

String name1=”Lily“;

So(name);

System.out.println(name[0]+”,”+name[1]);

So(name0,name1);

System.out.println(name0+”,”+name1);

}

請輸出結(jié)果?并詳細(xì)解釋為什么?【3分】

答:

<第六題>

public class Person {

static class User {

int id;

String name;

public User(int id, String name) {

this.id = id;

this.name = name;

}

public int getId() {

return this.id;

}

public String getName() {

return this.name;

}

class Student {

public void setid(int newId) {

id = newId;

}

public void setName(String newName) {

name = newName;

}

}

}

public void print(int id, String name) {

User user = new User(id, name);

System.out.println(user.getId() + “\t” + user.getName());

}

public static void main(String[] args) {

//…手寫補(bǔ)充代碼

}

}

要求:先對User進(jìn)行創(chuàng)建實(shí)例化 學(xué)號為:1001 姓名為: 張三 之后進(jìn)行修改 學(xué)號為: 1002 姓名為:李四 調(diào)用Person類的打印輸出方法顯示修改后的結(jié)果?!?分】

答:

<第七題>

列舉幾個(gè)你常去的IT技術(shù)型的網(wǎng)站,類型不限,個(gè)數(shù)不限,寫中文名亦可,并解釋為什么值得你去?【3分】

答:

四:編程算法題,將代碼下在每道題的下面[共5道題,第一,二題為5分,第三題為6分,第四題為8分,第五題為10分,總計(jì)34分]

1:請用遞歸算法寫一個(gè)方法求出兩個(gè)數(shù)字的最大公約數(shù)和最小公倍數(shù)【5分】

【安徽科大訊飛2012屆武漢大學(xué)校園招聘試題】

2:請將一個(gè)鏈表反序【5分】

【華為2011屆華中科技大學(xué)校園招聘試題】

3:現(xiàn)在有一個(gè)有趣的游戲:稱為殺人游戲!游戲規(guī)則是:輸入?yún)⒓拥目側(cè)藬?shù),在輸入一個(gè)基數(shù),然后每個(gè)人依次報(bào)數(shù),

當(dāng)前選手報(bào)的數(shù)能被基數(shù)整除的話,就判為死亡出局,剩下的再繼續(xù)數(shù)數(shù),當(dāng)數(shù)到最后一個(gè)時(shí)候,再接著從1開始從頭數(shù)數(shù)。。。

一直到活下的人小于基數(shù)為止,整個(gè)游戲結(jié)束,打印最后存活選手的編號;【6分】

例子:總數(shù):6 基數(shù) 2

M M M M M M

1 2 3 4 5 6

M X M X M X

1 2 3 4 5 6

M M M

1 2 3

M X M

1 2

M X

1

存活的人數(shù)是:1

存活的編號是:1

【微軟,中興的筆試題,要求不限制語言編寫實(shí)現(xiàn)】

4:比較兩個(gè)字符串,要求從字符串的最后一個(gè)元素開始逐個(gè)向前比較,如果兩個(gè)字符串的長度不等,則只比較短長度字符串的元素。請編程實(shí)現(xiàn)下面給出的比較方法,并返回比較中發(fā)現(xiàn)的不相等元素的個(gè)數(shù)?!?分】

public int getDiffNum(int len1, String str1,int len2, String str2)

例如:len1=3 str1=”acd” len2=5 str2=”zhacd” 函數(shù)返回為 0

len1=3 str1=”acd” len2=6 str2=”zhacdv” 函數(shù)返回為 3

【華為2012屆南京大學(xué)校園招聘試題】

5:任何一個(gè)自然數(shù)m的立方均可寫成m個(gè)連續(xù)奇數(shù)之和?!?0分】

例如:

1^3=1

2^3=3+5

3^3=7+9+11

4^3=13+15+17+19

請編程實(shí)現(xiàn):輸入一自然數(shù)n,求組成n^3的n個(gè)連續(xù)奇數(shù),格式必須按照上面進(jìn)行輸出。

評論
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲日本精品一区二区高清 | 亚洲AV乱码二区三区涩涩屋 | 中文字幕激情欧美 | 日韩亚洲欧美中文三级 | 亚洲中文字永久幕乱码 | 在线中文字幕精品视频 |