• 数码视讯2015校园招聘JAVA笔试题及答案


    一、选择题(每题5分,共20分)

    1、访问修饰符作用范围由大到小是(D)

    A、 private-default-protected-public

    B、 public -default-protected- private

    C、 private- protected-default- public

    D、public - protected- default-private

    2、以下(D)不是Object类的方法?

    A、clone()

    B、finalsize()

    C、toString()

    D、hasNext()

    3.Java中,以下(B)接口以键——值对的方式存储对象?

    A、java.util.Collection

    B、java.util.Map

    C、java.util.List

    D、java.util.Set

    4、指出下列程序运行的结果()

    Public class Example{

    String str=new String(“good”);

    char[] ch={‘a’,’b’,’c’ };

    public static void main(String args[]){

           Exampleex=new Example();

    Ex.change(ex.str,ex.ch);

    System.out.print(ex.str+”and  ”);

    System.out.print(ex.ch);

    }

    public void change(String str,char ch[]){

    str=”test ok”;

           ch[0]=’g’;

    }

    A、good and abc

    B、good and gbc

    C、test ok and abc

    D、test ok and gbc

    二、填空题(每题5分,共20分)

    5、JAVA基本数据类型包括__字符类型char,布尔类型boolean,数值类型____.

    6、Math.round(11.5)等于多少?12,Math.round(-11.5)等于多少?-11

    7、程序String str1="hello";String str2="he"+newString("llo");

    System.out.println(str1==str2);的运行结果是:false

    8、字符串分为两大类,一类是字符串常量,使用String类的对象表示;另一类是字符串变量,使用StringBuffer类的对象表示。

    三 简答

    9. 接口和抽象类的区别是什么?(10分)

    答案:接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

    另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

    还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.

    10. 利用递归方法求5!

    答案:

    public class Test {

     public static void main(String args[]) {

      int x = 5;

      int rs = Fac(x);

      System.out.println("" + x + "! = " + rs);

      }

     public static long Fac(int x) {

       if(x > 1)

       return (x * Fac(x - 1));

      else

       return 1;

     }

    }

    11. 编写多线程代码有几种实现方法?请用一段代码分别举例实现。

    答案:

    三种:

           (1)继承Thread类,重写run函数

                  创建:

                  classxx extends Thread{

                    public void run(){

                         Thread.sleep(1000) //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源

                  }}

                  开启线程:

                  对象.start()     //启动线程,run函数运行

           (2)实现Runnable接口,重写run函数

                  开启线程:

                  Threadt = new Thread(对象)       //创建线程对象

                  t.start()

           (3)实现Callable接口,重写call函数

                  Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。

                  Callable和Runnable有几点不同:

                  ①Callable规定的方法是call(),而Runnable规定的方法是run().

                  ②Callable的任务执行后可返回值,而Runnable的任务是不能返回值的

                  ③call()方法可抛出异常,而run()方法是不能抛出异常的。

                  ④运行Callable任务可拿到一个Future对象,Future表示异步计算的结果。它提供了检查计算是否完成的方法,以等

                  待计算的完成,并检索计算的结果.通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果

    12. 编程题:写一个观察者模式出来(先画类图,在用代码实现)

    答案:

    /// <summary>
        ///抽象主题类
        /// </summary>
        public abstract class Subject
        {
            private IList<Observer> observers = new List<Observer>();
            /// <summary>
            ///增加观察者
            /// </summary>
            /// <param name="observer"></param>
            public void Attach(Observer observer)
            {
                observers.Add(observer);
            }
            /// <summary>
            ///移除观察者
            /// </summary>
            /// <param name="observer"></param>
            public void Detach(Observer observer)
            {
                observers.Remove(observer);
            }
            /// <summary>
            ///向观察者(们)发出通知
            /// </summary>
            public void Notify()
            {
                foreach (Observer o in observers)
                {
                    o.Update();
                }
            }
        }
        /// <summary>
        ///抽象观察者类,为所有具体观察者定义一个接口,在得到通知时更新自己
        /// </summary>
        public abstract class Observer
        {
            public abstract void Update();
        }
        /// <summary>
        ///具体观察者或具体通知者,将有关状态存入具体观察者对象;在具体主题的内部状态改变时,给所有登记过的观察者发出通知。具体主题角色通常用一个具体子类实现。
        /// </summary>
        public class ConcreteSubject : Subject
        {
            private string subjectState;
            /// <summary>
            ///具体观察者的状态
            /// </summary>
            public string SubjectState
            {
                get { return subjectState; }
                set { subjectState = value; }
            }
        }
        /// <summary>
        ///具体观察者,实现抽象观察者角色所要求的更新接口,已是本身状态与主题状态相协调
        /// </summary>
        public class ConcreteObserver : Observer
        {
            private string observerState;
            private string name;
            private ConcreteSubject subject;
            /// <summary>
            ///具体观察者用一个具体主题来实现
            /// </summary>
            public ConcreteSubject Subject
            {
                get { return subject; }
                set { subject = value; }
            }
            public ConcreteObserver(ConcreteSubject subject, string name)
            {
                this.subject = subject;
                this.name = name;
            }
            /// <summary>
            ///实现抽象观察者中的更新操作
            /// </summary>
            public override void Update()
            {
                observerState = subject.SubjectState;
                Console.WriteLine("The observer's state of {0} is {1}", name, observerState);
            }
        }
    

      

    
    

    四、选做题

    一个有10亿条记录的文本文件,已按照关键字排好序存储,设计算法,可以快速的从文件中查找指定关键字的记录

    分析:10亿在 G量级, 分成100份, 为10M量级, 基本上放入内存无压力了.

    在这10亿记录中, 均分为100份, 把每份的第一条记录关键字和此记录对应的文件偏移量先扫入内存(类似索引), 这里需要磁盘随机io 100次.

    这样可以马上定位出指定关键字所在的记录块, 把相应的记录块拿到内存, 二分查找即可.

    原文:http://www.dy1280.com/thread-408-1-1.html

  • 相关阅读:
    多表连接查询
    从0开始独立完成企业级Java电商网站开发(服务端)
    ThreadLocal小试牛刀
    svn版本控制
    策略模式和工厂模式搭配使用
    MyBatis-Plus
    github骚操作
    【测试】 Java如何优雅的生成测试数据
    【随笔】开源之殇
    【Maven】maven 插件开发实战
  • 原文地址:https://www.cnblogs.com/dy1280/p/4031791.html
Copyright © 2020-2023  润新知