公司面试题实战(一)

1、一个栈的输入序列是12345,则下列序列中不可能是栈的输出序列的是(B )


A.23415 

B.54132

C.23145 

D.15432

答案:

B

2、总共创建了几个对象


String a="abc";  String b="abc";  那这里呢?

答案:

一个

3、TCP协议在每次建立或拆除连接时,都要交换几个报文


答案:

3次

4、x为多少?


int x=10;

x+=x-=x-x;

System.out.println(x);

答案:

20

5、下面哪个Map是排序的(A)?


A、TreeMap

B、HashMap

c、Hashtable

d、WeakHashMap

e、LinkedHashMap

6、ArrayList和LinkedList有什么区别?


答案:

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 

2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 

3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

7、写一个冒泡排序


public class Test {

    public static void main(String[] args) {

int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};

        sort(arr);

    }

public static void sort(int arr[]) {

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

            for (int j = 0; j < arr.length - i - 1; j++) {

if (arr[j + 1] > arr[j]) {

int tmp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = arr[j];

}

}

}

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

System.out.print(arr[k]);

}

    }

}

8、写一个单例模式


public class SingleObject {

// 创建 SingleObject 的一个对象

private static SingleObject instance = new SingleObject();

// 让构造函数为 private,这样该类就不会被实例化

private SingleObject() {

}

public static  SingleObject getInstance(){

return instance;

}

}

9、在java中对象啥时间被垃圾回收


当一个对象到GC Roots不可达时,在下一个垃圾回收周期中尝试回收该对象,如果该对象重写了finalize()方法,并在这个方法中成功自救(将自身赋予某个引用),那么这个对象不会被回收。但如果这个对象没有重写finalize()方法或者已经执行过这个方法,也自救失败,该对象将会被回收。

10、金额大小写转换


public static void main(String[] args) {

String capNumber[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; //capNumber[]存储大写数字汉字

String unit[] = {"","圆","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"}; //unit[]存储每一个位数所对应的大写汉字单位  unit[0]="",方便对应。

Scanner sc = new Scanner(System.in);                  //键盘录入数据

System.out.println("请输入12位以内任意整数:");

long num;

//判断输入数据合理性

while(true){

num = sc.nextLong();

String line = num +"";

if(line.length() > 12){

System.out.println("您输入的数据位数过大!请重输:");

}else {

break;

}

int times = 0;                                      //记录除的次数

long shang = 0;                                    //记录每一次的商

long yushu = 0;                                    //记录每一次的余数

String str = "";

while(true){

shang = num / 10;                              //得到商

yushu = num % 10;                              //得到余数

if(shang == 0 && yushu == 0){                  //当商和余数同时为0时退出循环

break;

}else{                                        //否则,将商重新赋值给num,继续循环

num = shang;

}

times++;                                      //次数加1,得到每位数据

str =  capNumber[ (int) yushu]+unit[times] + str;  //将大写数字汉字和大写单位连接赋值给str

}                                                      //去除字符串中的0

str = str.replaceAll("零[拾佰仟]","零").replaceAll("零+亿","亿").replaceAll("零{4}万", "")

.replaceAll("零+万","万").replaceAll("零+圆","圆").replaceAll("零+", "零")+"整";

System.out.println("阿拉伯数字转换成中国传统形式为: ");

System.out.println(str);                            //输出字符串

}

你可能感兴趣的:(公司面试题实战(一))