前两天去一家公司面试,问到的都是一些最基础的问题。但不知道是因为紧张还是其他什么愿意,有几道题给出的答案貌似不是面试官想要的。现在列举出来,温故知新一下。
1 哪些是check异常,哪些是uncheck异常?
The Java Language Specification calls any exception that derives from the class Error or
the class RuntimeException an unchecked exception. All other exceptions are called checked
exceptions.
这道题的答案肯定是知道的,只是当时一时发慌,又是第一个问题,答得可能有点乱。
-------------------------------------------------------------------------------------------------------------------------
2 LinkedList和ArrayList有什么区别,在什么场合上用?
1) A linked list store each object in a separate link, each link also stoe a reference to the next link in the sequence. In the Java programing language, all linked lists are actually double linked; that is, each link also store a reference to its predecessor.
Removing an element from the middle of a linked list is an inexpensive operation—only the links around the element to be removed need to be updated.
You should never use get
method to random access an object to step through a linked list. This method is inefficient. Each time you lookup anohter element, the search starts from the beginning of the list.
2) The List interface describes an ordered collection in which the position of elements matters. An ArrayList encapsulates a dynamically reallocated array object.
Removing an element from the middle of an ArrayList is expensive since all array elements beyond the
removed one must be moved toward the beginning of the array.
In a word, if you offten update a list, use LinkedList. If you offten random access a list, use ArrayList.
这道题当时回答的时候我应该已经把两者的区别说出来了,但提及到使用场合和效率问题时,我的回答面试官好像不太满意。
-------------------------------------------------------------------------------------------------------------------------
3 HashSet和TreeSet的区别?
1) In Java, hash tables are implemented as arrays of linked lists. Each list is called a bucket. To find the place of an object in the table, compute its hash code and reduce it modulo the total number of buckets. A HashSet class that implements a set based on the hash tabel. You add elements with the add
method. The contains
method is redefined to make a fast lookup to find if an element is already present in the set. It checks only the elements in one bucket and not all elements in the collection. You would only use a HashSet if you don’t care about the ordering
of the elements in the collection.
2) The TreeSet class is similar to the hash set, with one added improvement. A tree set is a sorted collection. You insert elements into the collection in any order. The sorting is accomplished by a red-black tree data structure. Adding a element to a tree is slower than adding it to a hash table, but it is still much faster than adding it into the right place in an array or linked list.
-------------------------------------------------------------------------------------------------------------------------
4 抽象类和接口的区别,什么时候用抽象类,什么时候用接口?
这个问题是老生常谈了,但很惭愧的说,两者的区别谁都能说上来,但是使用场合我确实不太清楚,也请各位指点了。
-------------------------------------------------------------------------------------------------------------------------
5 Synchronized必须需要一个对象锁吗?如果定义了一个Synchronized方法,这时是对哪个谁加锁?
A Synchronized
method automatically performs a
lock action when it is invoked; its body is not executed until the lock action
has successfully completed. If the method is an instance method, it locks the
monitor associated with the instance for which it was invoked (that is, the
object that will be known as this
during execution of the body of the
method). If the method is static, it locks the monitor associated with the Class
object that represents the class in which the method is defined.
对监视器加锁和对Class对象加锁我到是都答出来了,希望当时我表达的还算清楚。
-------------------------------------------------------------------------------------------------------------------------
6 wait和sleep的区别?
这个问题网上都是,我也答了一些最基本的东西。但面试官问了一些是使用上的不同,老实说多线程做的比较少,具体使用还真没什么经验。也希望高手指点!
-------------------------------------------------------------------------------------------------------------------------
7 简述一下生产者和消费者。
我简单的阐述了一下,其中提到了一句“当任务序列达到最大时,生产者就开始等待,直到有消费者消耗掉一个任务再进行生产”,然后面试官问了一句“为什么要有最大数量的任务限制?如果没有会怎么样?”。我当时只能凭个人感觉答了一些,而且看过网上的列子,好像所有写生成者和消费者程序的人都对最大任务数做了限制,我个人理解就是节省cpu的资源,不要造成内存的消耗过大,不知道是否正确。
-------------------------------------------------------------------------------------------------------------------------
8 死锁,为什么会产生死锁,Java中如何避免死锁?
互斥 持有与等待 非抢占性 循环等待,这个四个应该是产生死锁的条件,当时肯定不是按照这么专业的名词答得,大多说了一下自己的理解,大意上应该是对的,但对于Java中如何避免死锁还真没遇到过类似问题。还是待人指点了。
-------------------------------------------------------------------------------------------------------------------------
9 Java中有内存溢出吗? 列举几个例子。
Java是肯定有内存溢出了,当时我举的是HashMap的例子,如果一个对象的hashCode
方法和这个对象本身的属性有关,而且当这个对象的一个实例作为key值存到一个HashMap中之后,实例的属性发生了变化。这样再用这个key值去get存储的对象,就获得不了我们当初存储的对象了。不知道我我的理解是否对,请各位指正。当时面试官反问了一句:“如果用values
方法不就可以在找到所有的值对象吗?” 以前遇到过类似的问题,但就是一时想不起来如何回答了,还有一个内存溢出的例子,就是死活想不起来了,晕。
-------------------------------------------------------------------------------------------------------------------------
10 String StringBuffer StringBuilder的区别?
String a final class which can't be extended and updated. Every time you concatenate strings, a new String object is constructed. This is time consuming and it wastes memory. Using the StringBuilder class avoids this problem. StringBuffer, is slightly less efficient, but it allows multiple threads to add or remove characters. If all string editing happens in a single thread (which is usually the case), you should use StringBuilder.
面试官又问了一句StringBuffer是如何实现的,没答上来,后来看了看JDK的源码,就是对一个简单的字符数组的操作。哎,当时应该想到的,可能还是因为太紧张加上被问了很久了吧。
-------------------------------------------------------------------------------------------------------------------------
11 非阻塞I/O如何实现的?简单设计一个非阻塞I/O。
老实回答,没用过NIO,更没设计过。但以前看过一些文章,就是对采用类似观察者模式,循环的监视所有I/O流,当观察到一个I/O流处于非阻塞状态时才去对它采取操作,如果是阻塞状态就让其他线程去执行其他任务,不要等待这个被阻塞的I/O流。
-------------------------------------------------------------------------------------------------------------------------
12 Observer模式和Command模式的好处以及解决的问题。
因为我说这在现在的项目中用到了这两种模式,所以面试官才问。
1) Observer模式解决了多次传递参数句柄的问题,利用观察者通知对象发生了改变,就不用每次都将对象传递到用到这个对象的地方了。
2) Command模式实现了线性操作,统一管理各个认为。可以方便的操作哪个任务想要,哪个任务需要重做。
以上纯属个人理解,希望高手给点建议,对于设计模式真准备好好看看书,因为项目中实在用的太少,都是照抄别人写好的代码。(PS:一直做外包,没什么技术含量,很郁闷。
)
-------------------------------------------------------------------------------------------------------------------------
这次面试还为了一些比较宏观的问题,和英语面试,这里就不一一列举了。总体看来面试难度不大,如果不成功分析一下原因:
1 确实一些基础题没答到问题关键或者没说清楚。
2 有些东西都是个人理解,一直是错误的。
3 项目经验少,没有实际设计和使用经验。
分享到:
相关推荐
总结了在面试的时候常被问到的有关java项目上的常问问题,帮助顺利面试,但还是主要靠自己哦
### IT面试经典问题解析 #### 1. 自我介绍 - **知识点**: 求职者应准备一段简短而全面的...因此,准备面试时不仅要熟悉这些经典问题的回答技巧,还需要深刻理解每道题目背后的含义,以便更好地展现自己的能力和潜力。
这份资源集合了各类面试中经常被问到的问题,覆盖了技术、非技术、行为、情景等多个方面,对求职者来说具有很高的参考价值。通过下载并熟悉这些问题,求职者可以提前思考并完善自己的答案,增强面试自信心。 【标签...
本篇文章将针对面试中常见的问题进行解析,并提供一些回答这些问题时的策略与建议。 #### 一、个人背景类问题 1. **请简单介绍一下自己?** - 回答时可以简要介绍自己的基本信息(如学历、专业等),重点突出与...
【面试经典问题100问】是一份针对即将面试的求职者准备的参考资料,它包含了多种常见的面试问题及其回答建议,旨在帮助求职者更好地准备面试,提高被录用的机会。 1. **问题:请给我们谈谈你自己的一些情况** - **...
在英语面试中,面试官通常会围绕工作经历、专业知识和个人特质三个方面来提出一系列问题,以评估...通过准备这些问题的答案,应聘者可以在英语面试中表现出自己的专业素养、适应能力和个人魅力,从而增加成功的机会。
面试是求职过程中至关重要的环节,面试官提出的问题旨在评估求职者的技能、性格、经验和适应能力。以下是一些面试中常见的问题及其背后所蕴含的知识点: 1. **为什么我们要雇请你?** 这个问题是考察你的自信和自我...
### 面试1000问:面试问题解析与策略 #### 问题一:“请你自我介绍一下” **解析与策略**: 1. **确保一致性**:自我介绍的内容应该与个人简历上的信息保持一致,避免出现自相矛盾的情况。 2. **口语化表达**:用...
### 面试可能会问的问题 #### 一、Request 和 Session 的区别 1. **Request**: - **定义**:Request 对象主要用于捕获来自客户端的信息,包括但不限于表单提交的数据、URL 查询字符串和 Cookie 等。 - **特点**...
本文将对应届毕业生面试产品经理时可能会被问到的问题进行详细的总结和分析,从而帮助应届毕业生更好地准备面试。 1. 自我介绍问题 在面试中,自我介绍问题是非常重要的。面试官会通过自我介绍来了解候选人的表达...
8. 还有问题要问吗:询问与工作相关的问题,如培训机会、晋升机制,显示你对公司和职位的热忱和积极性。 9. 不适合职位的情况:表明你的灵活性和自我调整能力,愿意学习和适应,或者如果发现不适合,会主动寻求改变...
可能还需要准备一些面试官经常会问到的通用问题的答案。 2. 着装与礼仪:面试时的着装应该符合行业的标准,尽量正式,但也要考虑公司的企业文化和职位性质。第一印象对于面试至关重要,所以保持良好的礼仪,例如...
### 面试中可能被问到的JAVA问题解析 #### 一、基本概念与原理 **1. Java概述** - **定义与特点**:Java是一种面向对象的编程语言,由Sun Microsystems公司于1995年推出。它具有简单性、面向对象、健壮性、安全性...
面试官可能会问候选人认为自己的优点和缺点是什么,这个问题的目的在于了解候选人的自我认知和自我评价能力。在回答这个问题时,候选人应该诚实地评价自己,既要承认自己的优势,又要承认自己的缺点,并说明自己正在...
模拟电路作为电子工程领域的一个重要分支,对于电子工程师的专业...在准备面试时,应聘者应该根据自身掌握的知识和经验进行针对性的复习和准备,以便能够在面试中展现出自己对于模拟电路的深入理解以及实际操作能力。
射频工程师面试中通常会涉及的面试问题是技术人员在射频领域知识储备和实际应用能力的检验。接下来将详细解析上述内容中所涉及的射频相关知识点。 首先,面试官常会问应聘者在以往工作中参与的项目经验,并要求应聘...
在软件开发面试中,应聘者需要充分准备,以应对可能出现的各种问题。以下是一些关键的知识点,涵盖了应届毕业生和有经验的开发者可能遇到的面试挑战: 1. **自我介绍**: - 介绍自己时,不仅要提及教育背景,还要...
这些知识点不仅有助于理解面试过程中HR常问的问题及其背后的含义,还能帮助求职者更好地准备面试,展现出色的表现。 ### 一、面试常见问题及应对策略 #### 1. 你有缺点吗? **解析:** 这个问题是HR为了测试求职者...
1. **自我介绍**:面试时的自我介绍是向面试官展示自己的第一印象,应确保内容与简历相符,避免冗余和不相关的信息,做到条理清晰,语言口语化,最好提前准备并熟悉。 2. **家庭情况**:虽然较少被问及,但回答家庭...