Java 面试题-1

另有:java基础知识总结

1. OSI的7层从上到下

应用层 -表示层 -会话层 - 传输层 -网络层 - 数据链路层 - 物理层
这里写图片描述

2. 以下哪些不是 javaScript 的全局函数( C )

A. eval
B. escape
C. setTimeout
D. parseFloat

3. rmdir和rm

  • rmdir删除一个空文件夹
    使用方式: rmdir [-p] dirName—–参数: -p 当子目录被删后成为空目录的话,则一并删除。

  • 删除非空文件夹
    使用方式:rm [options] name…

    参数 [options]:
    -i 删除前逐一询问确认。
    -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
    -r 将目录及以下之档案亦逐一删除。

4.用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:”4”不能在第三位,”3”与”5”不能相连。

简单的用数组布尔型验证方法判断(繁琐),或者图结构遍历
这里写图片描述
图结构:https://www.cnblogs.com/skylar/archive/2014/04/17/3671795.html

5. HashSet 里元素是不能重复的, 用什么方法来区分重复与否

  • 当往集合添加元素调用 add(Object)方法时,会调用 Object 的 hashCode()方法判hashCode 是否已经存在,如不存在则直接插入元素;
  • 如已存在则调用 Object 对象的 equals()方法判断是否返回 true,如为 true 则说明元素已经 存在,如为 false 则插入元素。

6. List ,Set, Map是否继承自Collection接口? 存取元素有何差异

  • List,Set 是继承 Collection 接口; Map 不是。
  • List:元素有放入顺序,元素可重复 ,通过下标来存取 和值来存取
  • Map:元素按键值对存取,无放入顺序
  • Set:元素无存取顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在 set 中的位置是有该元素的 HashCode 决定的,其位置其实是固定的)

7. Java 中的值传递和引用传递?

  • 值传递:表示方法接收的是调用者提供的值。
  • 引用传递:表示方法接收的是调用者提供的变量地址。
  • java中方法参数传递方式是按值传递。

    如果参数是基本类型,传递的是基本类型的字面量值的拷贝。
    如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝。

  • 按值传递是指的是在方法调用时,传递的参数是按值的拷贝传递。

    • 按值传递重要特点:传递的是值的拷贝,也就是说传递后就互不相关了

8. switch 是否作用在byte 上,long上, String上?

  • switch 可作用于 char byte short int,包括他们的包装类;
  • switch 不可作用于 long double float boolean,包括他们的包装类;

9. Java如何进行异常处理? 写出几个常见的运行时异常的编译时异常

java 语言进行异常处理的方式有:
* throws: throws 是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
* throw : throw 是语句抛出一个异常。
* 常见的运行时异常的编译时异常:

NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ClassNotFoundException - 类找不到异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常

10. 已知一棵二叉树,先序遍历节点顺序: ADCEFGHB,中序遍历:CDFEGHAB,则后序遍历结果为:D

A. CFHGEBDA B. CDFEGHBA C. FGHCDEBA D. CFHGEDBA

  • 先序遍历记为:根左右
  • 中序遍历简单记为:左根右;
  • 后序遍历简单记为:左右根
    这里写图片描述

11. 下列哪两个数据结构,同时具有较高的查找和删除性能?( CD )

A. 有序数组
B. 有序链表
C. AVL 树
D. Hash 表
这里写图片描述

  • 平衡二叉树的查找,插入和删除性能都是 O(logN) ,其中查找和删除性能较好;哈希表的查找、插入和删除性能都是 O(1) ,都是最好的。所以最后的结果选择: CD

12. 下列排序算法中,哪些时间复杂度不会超过 nlogn ?( BC )

A. 快速排序
B. 堆排序
C. 归并排序
D. 冒泡排序

这里写图片描述

13. Unix 系统中,哪些可以用于进程间的通信?( ABCD )

A.Socket
B.共享内存
C.消息队列
D.信号量

知识点

  • 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
  • 信号(Signal):信号是较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,还可发送信号给进程本身;linux 除了支持 Unix 早期信号语义函数 sigal 外,还支持语义符合 Posix.1 标准的信号函数 sigaction(实际上,该函数是基于 BSD 的,BSD 为了实现可靠信号机制,又能够统一对外接口,用 sigaction 函
    数重新实现了 signal 函数);
  • 报文(Message)队列(消息队列):消息队列是消息的链接表,包括 Posix 消息队列 system V 消息队列。有足够权限的进程可向队列中添加消息,被赋予读权限的进程则可读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  • 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用 IPC 形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
  • 信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
  • 套接口(Socket):更为一般的进程间通信机制,用于不同机器之间的进程间通信。起初是 Unix 系统的 BSD分支开发出的,但现可移植到其它类 Unix 系统上:Linux 和 System V 的变种都支持套接字。

14. 静态变量通常存储在进程 全局区(静态区)

局部变量位于栈区,静态变量位于方法区,实例变量位于堆区,对象位于堆区,对象的引用位于栈区。

15. 提高查询Name字段的性能——添加索引

16. ip类型

这里写图片描述

17. 对于派生类的构造 函数,在定义对象时构造函数的执行顺序为—–213

1:成员对象的构造函数
2:基类的构造函数
3:派生类本身的构造函数

18. java 中, 为什么基类不能做为HashMap 的键值, 只能是引用类型,把引用类型作HashMap 的键值, 注意哪些地方 ?

  • 引用类型和原始类型的行为完全不同,且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

19. compare

工具类 StringUtil, 提供方法 int compare(char [] v1 ,char[] v2) 方法,比较字符串v1,v2 ,

如果指定的数与参数相等返回0。
如果指定的数小于参数返回 -1。
如果指定的数大于参数返回 1。

这里写图片描述

20. Java 出现 OutOfMemoryError(OOM) 的原因?出现后怎么解决?

  • 最常见的原因就是应用程序需要的堆空间是大的,但JVM 提供的小。 JVM 的启动配置中增加——如下配置:-Xmx1024m
  • 内存泄露:特定的编程错误会导致程序不停消耗内存,每使用有泄漏风险的功能就会留下一些不能被回收的对象到堆空间中,时间的推移,泄漏的对象会消耗所有堆空间,最终触发java.lang.OutOfMemoryError: Java heap space 错误。
  • 流量/数据量峰值:程序在设计之初均有用户量和数据量的限制,当达到 峰 值 , 并且 这 个 峰 值 超过设 计 初预 期, 以 前正 常 的 功 能 将停 止 ,并触发异常
  • 解决方案,如果你的应用程序确实内存不足,增加堆内存会解决 GC overhead limit 问题,
    给程序 1G 的堆内存:java -Xmx1024m com.yourcompany.YourClass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值