`

自己面试时被问到的问题

阅读更多

前两天去一家公司面试,问到的都是一些最基础的问题。但不知道是因为紧张还是其他什么愿意,有几道题给出的答案貌似不是面试官想要的。现在列举出来,温故知新一下。

 

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 项目经验少,没有实际设计和使用经验。

 

0
0
分享到:
评论

相关推荐

    java面试项目经验常问问题

    总结了在面试的时候常被问到的有关java项目上的常问问题,帮助顺利面试,但还是主要靠自己哦

    应届毕业生面试产品经理时会被问什么问题?.doc

    本文将对应届毕业生面试产品经理时可能会被问到的问题进行详细的总结和分析,从而帮助应届毕业生更好地准备面试。 1. 自我介绍问题 在面试中,自我介绍问题是非常重要的。面试官会通过自我介绍来了解候选人的表达...

    Android面试常问问题

    自己在网上收罗的一些Android面试常问问题

    100个常见面试问题和答案

    "100个常见面试问题和答案" 面试是职业发展的关键一步骤,对于求职者来说,准备充分是非常重要的。今天,我们将要讨论100个常见...通过回答这些问题,求职者可以更好地展示自己的能力和特征,从而提高面试的成功率。

    机器学习面试总结

    找工作时自己总结的机器学习面试经常被问到的问题

    项目经理面试题集,包含绝大多数项目经理面试时所要问到的内容

    本资源摘要信息涵盖了项目经理面试时常见的问题和答案,涉及到项目计划、人员管理、资源分配、项目执行和监控等方面。以下是详细的知识点: 一、项目计划 * 工期和工作量之间的差异:工期是指商业/日历上的天数,...

    Linux 50问面试常问问题

    这份Linux面试23问旨在帮助面试者全面了解Linux操作系统,涵盖了Linux基础知识、常用技术关键词以及应用场景。通过这份面试题目,您可以了解到Linux系统的安装、配置、命令行操作、网络管理、安全性等方面的知识。 ...

    java初级常见面试题,自己面试中总结的面试官常问的问题,仅供参考!

    java初级常见面试题,自己面试中总结的面试官常问的问题,仅供参考!

    C/C++面试常问问题

    自己从网上找了一些关于C/C++的面试题,希望对大家有用。

    通信考研面试部分问题

    之后面试官问问题极有可能会挑考生擅长的地方,或者问问考生参加的电子竞赛的具体内容以此来判断考生的实际动手能力。 2,导师提问,不同的导师问问题的难度不一样,有的导师问的很简单,有的导师故意会问一些很难的...

    Java面试题之面试被问到Java组件实现原理时,该可以从哪些角度回答

    而在考察基础知识时,你一定被面试官追问过,某某组件的实现原理是什么。 那么,对于仅仅使用组件的开发人员来说,了解组件的实现原理真的很重要吗?这会不会是面试官的故意刁难呢?在回答这些问题之,我先跟你分享...

    博士“申请-考核制”面试——英文提问问题/答案模板

    博士“申请-考核制”面试英文提问问题/答案模板 在博士“申请-考核制”面试中,英文提问是不可避免的一部分。...在回答面试问题时,需要自信、自然、简洁地介绍自己的信息,并展示自己的优点和缺点。

    计算机考研复试面试常问问题 计算机网络篇(上).pdf

    在复习过程中,我用心查阅并整理了在**考研复试面试**中可能问到的大部分问题,并**分点整理**了答案,可以**直接理解背诵并加上自己的语言润色**!极力推荐打印下来看,效率更高!绝对良心之作!

    企业招聘面试官必问的经典问题.docx

    在面试时,面试官必问问题以及如何巧妙的回答 面试时,面试官必问问题,HR 提出来的问题,总会有那么几个比较奇怪的问题,但是他们问的每一个问题背后都有要考察的原因。 一、你为什么选择这份工作? 这题目是 HR...

    【面试小技巧】当被问到你觉得你的缺点是什么?该如何“高质量回答”?面试小白必看!.pdf

    认识自己的缺点就是一个巨大的优点,当 HR 问到你缺点的时候,你的机会来了,尽快展示你的自知之明吧!对待这个问题, 惟一的对策就是真诚地暴露自己的弱点,只要这个弱点不是你所申请职位的“致命 伤”即可。 此...

    遇到的JAVA面试问题总结,只是面试问题

    给即将面试的java软件职业的一点帮助,自己面试过程中遇到的问题,以及一起培训的其他人面试问题的一个总结,只是问题总结,没有答案,答案可以自己百度

    Oracle面试题常见的问题

    自己面试时候整理的,50道题带有答案。挺好的。

    2024年tensorflow面试题必问.zip

    适用人群:本面试题适用于所有想要参加技术面试的求职者,无论你是刚毕业的大学生还是有一定工作经验的开发者,都可以通过这些面试题来提升自己的面试能力。 使用场景及目标:本面试题可以在求职者准备技术面试的...

    面试被问离职原因.docx

    在面试中,被问到离职原因是非常常见的问题,面试官通过这个问题可以了解申请人的个人状况和职业发展史。那么,面试中如何回答离职原因的问题呢?下面我们将为大家总结一些常见的离职原因,并分析如何回答这些问题。...

    java面试过程中遇到的问题总结

    这个是我个人面试的一些总结,希望给大家一些帮助。如果文档有欠缺或者的地方还请大家海涵,自己动手查找资料。(总结的比较粗糙)

Global site tag (gtag.js) - Google Analytics