数码视讯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. 编程题:写一个观察者模式出来(先画类图,在用代码实现)

答案:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/// <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

posted on   校园共享  阅读(1623)  评论(2编辑  收藏  举报

编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示