【java面试题】数据结构、算法及计算机基础部分

  |   0 评论   |   1,296 浏览

1、一个byte 几个单位?【基础】

答:8bit。

2、常用UNIX 命令(Linux 的常用命令)(至少10 个)【基础】

答:ls pwd mkdir rm cp mv cd ps ftp telnet ping env more echo

3、后序遍历下列二叉树,访问结点的顺序是?【基础】

bac63eab39bd4b1a902353cda91041f9.png

答:顺序为:DJGEBKNIFCA 。

4、排序都有哪几种方法?请列举。用JAVA 实现一个快速排序。【基础】

答:排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排

序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱

排序、基数排序);

快速排序的伪代码:

//使用快速排序方法对a[ 0 :n- 1 ]排序

从a[ 0 :n- 1 ]中选择一个元素作为middle,该元素为支点;

把余下的元素分割为两段left 和right,使得left 中的元素都小于等于支点,

而right 中的元素都大于等于支点;

递归地使用快速排序方法对left 进行排序;

递归地使用快速排序方法对right 进行排序;

所得结果为left + middle + right。

5、编程题:设有n个人依围成一圈,从第1个人开始报数,数到第m个人出
列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所
有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺序;
要求用java 实现。【中等难度】

答:代码如下:

package test;

public class CountGame {

private static boolean same(int[] p,int l,int n){

for(int i=0;i

if(p[i]==n){

return true;

}

}

return false;

}

public static void play(int playerNum, int step){

int[] p=new int[playerNum];

int counter = 1;

while(true){

if(counter > playerNum*step){

break;

}

for(int i=1;i

while(true){

if(same(p,playerNum,i)==false) break;

else i=i+1;

}

if(i > playerNum)break;

if(counter%step==0){

System.out.print(i + " ");

p[counter/step-1]=i;

}

counter+=1;

}

}

System.out.println();

}

public static void main(String[] args) {

play(10, 7);

}

}

本文为博主原创文章,未经博主允许不得转载。

评论

发表评论