有道笔试题

1.下列程序的运行结果

public static void main(String args[]) {
    Thread t =  new Thread() {
             public void run() {
                 pong();
             }
         };
         t.run();
         System.out.print( "ping" );
     }
     static void pong() {
         System.out.print( "pong" );
     }
  • pingpong
  • pongping
  • pingpong和pongping都有可能
  • 都不输出
这里需要注意Thread的start和run方法
用start方法才能真正启动线程,此时线程会处于就绪状态,一旦得到时间片,则会调用线程的run方法进入运行状态。
而run方法只是普通方法,如果直接调用run方法 ,程序只会按照顺序执行主线程这一个线程。
如果是t.start();则选c
2.以下集合对象中哪几个是线程安全的?( )
  • ArrayList
  • Vector
  • Hashtable
  • Stack
  • HashMap
  • LinkedList

在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。 下面是这些线程安全的同步的类:

vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。

statck:堆栈类,先进后出。Stack继承了Vector,所以线程也是安全的

hashtable:就比hashmap多了个线程安全

enumeration:枚举,相当于迭代器

Java提供的线程安全的Queue可以分为 阻塞队列和非阻塞队列 ,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。 
3. 在公司局域网上 ping www.taobao.com 没有涉及到的网络协议是()

A 、 ARP                          B 、 DNS                                C 、 TCP                          D 、 ICMP

DNS 是将域名 www.taobao.com 映射成主机的 IP 地址, ARP 是将 IP 地址映射成物理地址, ICMP 是报文控制协议,与ping相关。而一个 ping 命令并不会建立一条 TCP 连接,故没有涉及 TCP 协议。

4. 进度条中哪个属性是设置进度条大小格式的(D)
A,android:secondaryProgress B,android:progress C,android:max D,style

5.请解释RPC。

  什么是RPCRemote Procedure Call,远程过程调用。也就是说,调用过程代码并不是在调用者本地运行,而是要实现调用者与被调用者二地之间的连接与通信。比较严格的定义是:Remote procedure call (RPC) is a  protocol   that allows a  computer program   running on one computer to cause a  subroutine   on another computer to be executed without the programmer explicitly coding the details for this interaction. When the software in question is written using  object-oriented   principles, RPC may be referred to as  remote invocation   or  remote method invocation. 这样一讲,容易联想到C/S模式的程序设计。RPC的基本通信模型是基于Client/Server进程间相互通信模型的一种同步通信形式;它对Client提供了远程服务的过程抽象,其底层消息传递操作对Client是透明的。在RPC中,Client即是请求服务的调用者(Caller),而Server则是执行Client的请求而被调用的程序(Callee)

6.请解释full GC。
  • 新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具
    备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。

 

  •  老年代 GC(Major GC  / Full GC):指发生在老年代的 GC,出现了 Major GC,经常
    会伴随至少一次的 Minor GC(但非绝对的,在 ParallelScavenge 收集器的收集策略里
    就有直接进行 Major GC 的策略选择过程) 。MajorGC 的速度一般会比 Minor GC 慢 10
    倍以上。
7.请解释LR.
a.
 

 自底向上分析方法是一种移进—归约过程,当分析的栈顶符号串形成句柄时就采取归约动作,因而自底向上分析法的关键问题是在分析过程中如何确定句柄。LR分析法正是给出一种能根据当前分析栈中的符号串(通常以状态表示)和向右顺序查看输入串的K个(K≥0))符号就可唯一地确定分析器的动作是移进还是归约和用哪个产生式归约,因而也就能唯一地确定句柄,所以LR分析过程是一种规范归约过程。

b.逻辑斯蒂回归模型。逻辑斯蒂回归模型与最大熵模型都属于对数线性模型。


8.请解释LRU。

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

9.请解释github。

GitHub 使用 Git 作为版本控制系统(version control system),提供在线源码托管的服务。同时是一个有社交功能的开发者社区。

10.请解释cdn。

内容分发网络其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。

10.SQL

结构化查询语言英语Structured Query Language缩写SQL), 是用于访问和处理数据库的标准的计算机语言。IBM公司最早使用在其开发的数据库系统中。后来,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言。

11.O2O

O2O(Online To Offline)模式,又称离线商务模式,是指线上营销线上购买带动线下经营和线下消费。O2O通过促销、打折、提供信息、服务预订等方式,把线下商店的消息推送给互联网用户,从而将他们转换为自己的线下客户,这就特别适合必须到店消费的商品和服务,比如餐饮、健身、电影和演出、美容美发、摄影及百货商店等.

12.SSD

固态硬盘(Solid State Disk,简称SSD)现在主要是指基于 NAND FLASH的半导体存储驱动器,由于被认为可以替代传统机械硬盘,我们又将其翻译为固态硬盘.固态硬盘具有传统机械硬盘不具备的快速读写、质量轻、能耗低以及体积小等特点,同时其劣势也较为明显,其价格仍较为昂贵,容量较低,一旦硬件损坏,数据较难恢复等;

13. map reduce
MapReduce Google 提出的一个 软件架构 ,用于大规模数据集(大于1 TB )的 并行运算 。概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从 函数式编程语言 借来的。
14.请简单介绍动态代理。
由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。动态代理类的源码是在程序运行期间由JVM根据反射等机制动态的生成,所以不存在代理类的字节码文件。代理类和委托类的关系是在程序运行时确定。
动态代理与普通的代理相比较,最大的好处是接口中声明的所有方法都被转移到一个集中的方法中处理(invoke),这样,在接口方法数量比较多的时候,我们可以进行灵活处理,而不需要像静态代理那样每一个方法进行中转。 

动态代理类只能代理接口,代理类都需要实现InvocationHandler类,实现invoke方法。该invoke方法就是调用被代理接口的所有方法时需要调用的,该invoke方法返回的值是被代理接口的一个实现类 
15。 Java final,finally,finalize的区别

(1) final:修饰符(关键字),如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

(2) finally:在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally块(如果有的话)。需要注意的一点是:无论是否产生异常,finally都会被执行。

(3) finalize:方法名。 Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。 这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
    16.synchronized 与 java.util.concurrent.locks.Lock 区别

    主要区别

    1、Lock能完成几乎所有synchronized的功能,并有一些后者不具备的功能,如公平锁、等待可中断等

    2、synchronized 是Java 语言层面的,是内置的关键字;Lock 则是JDK 5中出现的一个包,在使用时,synchronized 同步的代码块可以由JVM自动释放;Lock需要程序员在finally块中手工释放,如果不释放,可能会引起难以预料的后果。


    17.


    题目跟leetcode中的第139题是一样的。用一维DP即可。

    18.


    此道题目源自于编程之美2.4,原题是求1的数目,在这里是求0的个数。根据m和n的正负性,进行讨论。比如当m和n都为整数时,先统计0到n有多少个0,然后再统计0到m有多少个0,然后互减。

    19.


    这道题目,只需要层次遍历二叉树,然后用NULL来隔离上层和下层。遍历当前层时,用一个节点指针数组保存当前层的所有节点指针。当前层遍历结束后,再对这个指针数组进行操作。

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值