二十四线程笔试面试题汇总,使用嵌套循环在调

2019-08-17 18:58 来源:未知

使用 for 循环输出空心的菱形,for菱形

输出空心的菱形图案,这在等级考试与公司面试时也出现过类似题目,本范例的目的在于熟练掌握 for 循环的嵌套使用。

创建 Diamond 类,在该类的主方法中调用 printHollowRhombus() 方法完成 10 行的空心菱形输出。其中 printHollowRhombus() 方法是在范例中自定义的,该方法使用两个双层 for 循环分别输出菱形的上半部分与下半部分。代码如下:

public class Diamond {
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        printHollowRhombus(10);
    }

    public static void printHollowRhombus(int size) {
        // TODO 自动生成的方法存根
        if(size%2==0){
            size  ;    //计算菱形大小
        }
        for(int i=0;i<size/2 1;i  ){
            for(int j=size/2 1;j>i 1;j--){
                System.out.print(" ");    //输出左上角位置的空白
            }
            for(int j=0;j<2*i 1;j  ){
                if(j==0||j==2*i){
                    System.out.print("*");    //输出菱形上半部分边缘
                }else{
                    System.out.print(" ");    //输出菱形上半部分空心
                }
            }
            System.out.println("");
        }
        for(int i=size/2 1;i<size;i  ){
            for(int j=0;j<i-size/2;j  ){
                System.out.print(" ");    //输出菱形左下角空白
            }
            for(int j=0;j<2*size-1-2*i;j  ){
                if(j==0||j==2*(size-i-1)){
                    System.out.print("*");    //输出菱形下半部边缘
                }else{
                    System.out.print(" ");    //输出菱形下半部空心
                }
            }
            System.out.println("");
        }
    }
}

 

for 循环输出空心的菱形,for菱形 输出空心的菱形图案,这在等级考试与公司面试时也出现过类似题目,本范例的目的在于熟练掌握...

      Java基本语法中的for循环非常灵活并且可以嵌套使用,其中双层for循环是程序开发中使用最频繁的,常用于操作表格数据,对于行数与列数相同的表格操作代码比较简单,但是类似九九乘法表就不好控制了,因为它的列数要与行数对应,可以说这个表格是个三角形,本实例通过双层循环输出了这个九九乘法表,效果如图所示。在面试与等级考试中也常出现这类题目。

第一篇    多线程笔试面试题汇总

 

    多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究院实习生招聘时就被问到了几个概念性题目)。然后是一些选择题,这些一般在笔试时出现,虽然不是太难,但如果在选择题上花费大多时间无疑会对后面的编程题造成影响,因此必须迅速的解决掉。最后是综合题即难一些的问答题或是编程题。这种题目当然是最难解决了,要么会引来面试官的追问,要么就很容易考虑不周全,因此解决这类题目时一定要考虑全面和细致。

    下面就来看看这三类题目吧。

 

图片 1

一.概念性问答题

第一题:线程的基本概念、线程的基本状态及状态之间的关系?

 

第二题:线程与进程的区别?

       这个题目问到的概率相当大,计算机专业考研中也常常考到。要想全部答出比较难。

 

第三题:多线程有几种实现方法,都是什么?

 

第四题:多线程同步和互斥有几种实现方法,都是什么?

       我在参加2011年迅雷校园招聘时的一面和二面都被问到这个题目,回答的好将会给面试成绩加不少分。

 

第五题:多线程同步和互斥有何异同,在什么情况下分别使用他们?举例说明。

 

创建MultiplicationTable类,在该类的主方法中创建双层for循环,第一层for循环也称为外层循环,用于控制表格的行;第二层循环也称为内层循环,用于控制表格的列。这里第二层循环的控制变量非常重要,它的条件判断是列数要等于行数的最大值,然后输出内层与外层循环控制变量的乘积,这样就实现了九九乘法表。程序代码如下:

二.选择题

第一题(百度笔试题):

以下多线程对int型变量x的操作,哪几个不需要进行同步: 
A. x=y;      B. x ;    C. x;    D. x=1;

 

第二题(阿里巴巴笔试题)

多线程中栈与堆是公有的还是私有的

A:栈公有, 堆私有

B:栈公有,堆公有

C:栈私有, 堆公有

D:栈私有,堆私有

 

 

三.综合题

第一题(台湾某杀毒软件公司面试题):

在Windows编程中互斥量与临界区比较类似,请分析一下二者的主要区别。

 

第二题:

一个全局变量tally,两个线程并发执行(代码段都是ThreadProc),问两个线程都结束后,tally取值范围。

inttally = 0;//glable

voidThreadProc()

{

       for(inti = 1; i <= 50; i )

              tally  = 1;

}

 

第三题(某培训机构的练习题):

子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。

 

第四题(迅雷笔试题):

编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。

 

第五题(Google面试题)

有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式:

A:1 2 3 4 1 2....

B:2 3 4 1 2 3....

C:3 4 1 2 3 4....

D:4 1 2 3 4 1....

请设计程序。

 

下面的第六题与第七题也是在考研中或是程序员和软件设计师认证考试中的热门试题。

第六题

生产者消费者问题

这是一个非常经典的多线程题目,题目大意如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,所有生产者和消费者都是异步方式运行的,但它们必须保持同步,即不允许消费者到一个空的缓冲区中取产品,也不允许生产者向一个已经装满产品且尚未被取走的缓冲区中投放产品。

 

第七题

读者写者问题

这也是一个非常经典的多线程题目,题目大意如下:有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者读时写者也不能写。

 

多线程相关题目就列举到此,如果各位有多线程方面的笔试面试题,欢迎提供给我,我将及时补上。谢谢大家。

 

下一篇《多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》将从源代码的层次上讲解创建多线程的二个函数CreateThread与_beginthreadex到底有什么区别,让你明明白白的完成与多线程第一次亲密接触。

public class MultiplicationTable {

 

    public static void main(String[] args) {

 

        for(int i=1;i<=9;i ){// 循环控制变量从1遍历到9

 

            for(int j=1;j<=i;j ){// 第二层循环控制变量与第一层最大索引相等

 

                // 输出计算结果但不换行

 

                System.out.print(j "*" i "=" i*j "t");

 

            }

 

            System.out.println();// 在外层循环中换行

 

        }

 

    }

 

}

心法领悟:灵活使用嵌套循环。

循环语句可以完成复杂的运算,也可以用于控制程序的递归流程,而多层循环可以实现更加复杂的业务逻辑,是学习编程必须掌握的一种应用。在处理有规则的大量数据时,应该考虑使用多层循环来优化程序代码,但是建议添加详细的代码注释,便于以后的维护与修改工作。

 

版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于网络编程,转载请注明出处:二十四线程笔试面试题汇总,使用嵌套循环在调