常见面试以及答案(二)

 

如题一样干的干货,总结了一些小伙伴在面试中遇到的问题以及其解答,如果你最近在面试中也遇到了问题,欢迎前来投稿哦~...



1、.junit需要注意什么?什么时候用before什么时候用beforeClass Before注释指示此方法必须在类中的每个测试之前执行,以便执行测试所需的一些前提条件。

BeforeClass注释指示所附加的静态方法必须在类中的所有测试之前执行一次。当测试方法共享计算expensive的设置(例如连接到数据库)时,会发生这种情况。

2、有两个字符串str1,str2,判断str2是否在str1中,有的话有几次?位置分别在什么地方?

3、linux 查询一个log日志中前10行的命令 查询一个log日志后10行的命令 查询一个log中关键字error出现的次数,分别在哪一行 查询当前运行java的进程 远程拷贝的命令前n行,head-n(行数) ***.log

后n行,tail-n(行数) ***.log

查看error 在log中的哪些行出现,grep –rb "error" ***.log

查看error 在log中的出现次数,grep –rb "error" ***.log -c

查看当前运行的java进程,ps -ef |grep java

远程拷贝,linux->linux:scp ***.conf

  1. 10.1.1.1:/search/odin/test/new.conf
Linux->windows,sz ***.conf

4、输入一个矩阵,按照从外向里的顺序依次打印出每一个数字。

例如,输入:  1     2     3       4

                     5     6     7       8

                     9    10    11    12


                    13    14    15    16


则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10

算法分析:

假设这个矩阵的行数是rows,列数是columns,打印第一圈的左上角坐标是(0,0),第二圈左上角的坐标是(1,1),依次类推。我们注意到,左上角的坐标中行标和列标总是相等的,于是可以在矩阵中选取左上角为(start,start)的一圈作为我们分析的目标。

对于一个5X5的矩阵,最后一圈只有一个数字,对应的坐标为(2,2)。我们发现5>2x2.对于一个6X6的矩阵,最后一圈有4个数字,其左上角的坐标仍然是(2,2)。我们发现6>2x2依然成立。于是我们可以得出,让循环的条件是columns>startX*2并且rows >startY*2.所以我们可以用如下循环来打印矩阵:

public void PrintMatrixClockwisely(int[][] numbers,int columns,int rows){

System.out.println("顺时针打印的矩阵为:");

if(numbers == null || columns start*2){

PrintMatrixInCircle(numbers, columns, rows,start);

++start;

}

}

接着我们考虑如何打印矩阵的一圈的功能。我们可以把打印一圈分为四步:

第一步:从左到右打印一行

第二步:从上到下打印一列

第三步:从右到左打印一行

第四步:从下到上打印一列

每一步我们根据起始坐标和终止坐标用一个循环就能打印出一行或者一列。但仍需仔细分析打印每一步的前提条件。第一步总是需要的,因为打印一圈至少需要有一步;如果只有一行,那么就不需要第二步了,也就是说需要第二步的前提条件是终止行号大于起始行号,需要第三步的前提条件是圈内至少有两行两列,也就是说除了要求终止行号大于起始行号之外,还要求终止列号大于起始列号,同理,需要打印第四步的前提条件是至少有三行两列,因此要求终止行号比起始行号至少大2,同时终止列号大于起始列号。

问题分析:

如何从键盘输入一个二维矩阵:

首先需要输入矩阵的行数和列数,即通过 int rows = scanner.nextInt(); 和 int columns = scanner.nextInt();来定义输入矩阵的行数和列数;

其次,定义一个二维矩阵,并用空格的方式输入:

int[][] array = new int[rows][columns];

for(int i = 0;i 


    关注 搜狗测试


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册