java面试题详解(java面试题简书)

作者&投稿:延依 (若有异议请与网页底部的电邮联系)
~ java两年经验面试都会问什么问题

个人介绍:

首先介绍下我面试时的自身条件情况,我把自己的情况分为优势和劣势来说可能更有利于你们比较自身情况。

劣势:

1.15年7月毕业后开始到上海工作,面试的时候是17年3月到4月,一年多的经验,勉强算两年经验。分析:一年多经验我认为是比较尴尬的,处于一个不上不下的位置,很多公司比较喜欢招三年经验的,或者直接招应届生来培养。

2.毕业于一个非985/211,勉强上一本的高校。分析:这个相对影响较小,因为有工作经验后,公司对学校的要求就没那么高了,只要是本科就基本没问题,但是还是有个别叼毛公司只要985/211。

3.前一家公司是传统电信行业,加入项目组时,项目已经上线有段时间了,我们的任务就是有需求就开发,有bug就优化,其他时间就聊骚,各干各的,工作一年多跟在养老一样,用一句话说就是编程5分钟,扯淡2小时,项目经验严重不足,没开发过很难的需求。分析:这一点是最伤的,公司招有经验的就想看你都干了些什么牛批的东西,结果你告诉面试官我写的需求都是垃圾。

优势:

1.大学时拿过比较多的奖,每年都是校级优秀学生,毕业时是市级优秀毕业生,拿过省级ACM二等奖等。分析:大学的荣誉对一个有工作经验的人来说,公司不一定会看重,但是可能会对面试官产生微妙的影响,特别是ACM奖,我碰到过有的面试官也是搞过ACM的,有共同的话题聊起来总是比较容易的,但是也要注意不能把这一栏篇幅写的过于多,只能当作点缀用,我当时是放在简历最后一栏,简要的写了最主要的几个奖。

2.良好的沟通交流能力。分析:这个能力不会是关键性的,但是可以加分。

3.较强的学习能力和逻辑思维能力。分析:有些公司和面试官还是比较看重一个人的学习能力的,经验代表着你现在在什么级别,而学习能力则代表着你将来能到达什么级别。

学习过程:

看了我的优劣势介绍,你会发现我的优势相对于我的劣势来说,简直不值一提。我自己对此也有清晰的认识,因此从过完年之后,我就开始抓紧空闲时间学习。学习的过程如下:

1.看面试题

正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐,如下:

Java面试题全集(上)很多基础的东西,建议先看。

各大公司Java后端开发面试题总结

面试心得与总结—BAT、网易、蘑菇街

关于Java面试,你应该准备这些知识点

2.深入学习

在看面试题的过程,你会遇到一些自己没接触过的或者以前没深入学习过的知识,例如最常问的HashMap内部实现原理,这就促使你得开始去看jdk的源码或者是学习一些新的东西。看源码是很重要的一步,起步很难,但是会让你收益良多,看源码的过程如果碰到无法理解的地方,可以百度看下别人的理解。我学习源码的过程中,看过几个人的关于源码的文章写的很不错,如下:

五月的仓颉

占小狼

zhangshixi的Corejava系列

3.熟悉项目

找出自己工作以来开发过的最叼的功能,将整个功能的流程和涉及的东西吃透。项目是面试中必问的环节,一般是以一个功能点为基础展开问,因此你必须对这个功能有很深的认识,不能有模糊的地方。如果有时间,能把涉及到的知识点也搞懂最好。

4.做面试题

有不少公司是有面试的,如果你没有准备过,很容易在各种小地方犯错,建议去一些面试题网站多做些题目,我自己是用的牛客网。

5.学习记录

把自己每天的学习时间和学习内容记录下来,可以让自己更有动力的学习,学习是一个枯燥的过程,你必须让自己时刻保持有动力。

投简历、约面试环节

1.在哪些网站投?

拉勾网、BOSS直聘、猎聘网。

2.是否该海投?

投简历分为两个情况。

1)没有社招面试经验:建议采取海投的方式,只要职位要求跟自己比较匹配都可以投,累计面试经验。这个环节可以把投简历的网站增加两家:智联和无忧。

2)自认为社招面试经验已经足够:投那些职位匹配、公司满意的职位。公司评价可以去看准网、百度、知乎等查询。

3.一天约几家面试合适?

最理想的情况为2家面试,上午一般在10点左右,下午一般在2点左右。建议把理想的公司放下午,因为下午的时间比较充足,可以让公司更充分的了解你。我开始面的时候,每次都是上午面的不好,下午面的不错。

4.投简历经常没下文?

我当初也没想到简历筛选这关有这么难,可能是我的简历确实亮点不多,再者HR很多都不是行内人,因此他们看得最直接的就是你上家的公司和你毕业的学校,如果你不是从牛逼的公司/学校出来,可能会碰到和我一样的情况,应对的办法就是多投。

5.是否该裸辞?

我一开始是边上班边投,然后利用调休时间,或者请假去面试。后来,面试机会越来越多,请假太频繁了,自己都不好意思了,并且自己也已经有足够的信心,这个时候我选择了裸辞。裸辞还有一个原因是,在面试过程中你会发现,有的公司要人要的紧,如果你的辞职流程过长可能会导致你错过这个公司。

6.注意事项

1)面试前一天把路线和时间算好,最好别迟到。

2)背个书包,带好简历、充电宝、纸巾、雨伞。

面试环节

1.笔试常见的问题?

面试常见的问题上面给的面试题链接基本都有。我只提几点:1)写SQL:写SQL很常考察groupby、内连接和外连接。2)手写代码:手写代码一般考单例、排序、线程、消费者生产者。我建议排序算法除了冒泡排序,最好还能手写一种其他的排序代码。试想:如果一般面试者都写的冒泡排序,而你写的是快速排序/堆排序,肯定能给面试官留下不错的印象。

2.面试流程?

1)让你自我介绍

2)问Java基础知识

3)问项目

4)情景问题,例如:你的一个功能上了生产环境后,服务器压力骤增,该怎么排查。

5)你有什么想问面试官的

3.面试常问的知识点?

1)集合相关问题(必问):

HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现。

HashMap和Hashtable的区别。

ArrayList、LinkedList、Vector的区别。

HashMap和ConcurrentHashMap的区别。

HashMap和LinkedHashMap的区别。

HashMap是线程安全的吗。

ConcurrentHashMap是怎么实现线程安全的。

2)线程相关问题(必问):

创建线程的3种方式。

什么是线程安全。

Runnable接口和Callable接口的区别。

wait方法和sleep方法的区别。

synchronized、Lock、ReentrantLock、ReadWriteLock。

介绍下CAS(无锁技术)。

什么是ThreadLocal。

创建线程池的4种方式。

ThreadPoolExecutor的内部工作原理。

分布式环境下,怎么保证线程安全。

3)JVM相关问题:

介绍下垃圾收集机制(在什么时候,对什么,做了什么)。

垃圾收集有哪些算法,各自的特点。

类加载的过程。

双亲委派模型。

有哪些类加载器。

能不能自己写一个类叫java.lang.String。

4)设计模式相关问题(必问):

先问你熟悉哪些设计模式,然后再具体问你某个设计模式具体实现和相关扩展问题。

5)数据库相关问题,针对Mysql(必问):

给题目让你手写SQL。

有没有SQL优化经验。

Mysql索引的数据结构。

SQL怎么进行优化。

SQL关键字的执行顺序。

有哪几种索引。

什么时候该(不该)建索引。

Explain包含哪些列。

Explain的Type列有哪几种值。

6)框架相关问题:

Hibernate和Mybatis的区别。

SpringMVC和Struts2的区别。

Spring用了哪些设计模式。

Spring中AOP主要用来做什么。

Spring注入bean的方式。

什么是IOC,什么是依赖注入。

Spring是单例还是多例,怎么修改。

Spring事务隔离级别和传播性。

介绍下Mybatis/Hibernate的缓存机制。

Mybatis的mapper文件中#和$的区别。

Mybatis的mapper文件中resultType和resultMap的区别。

Mybatis中DAO层接口没有写实现类,Mapper中的方法和DAO接口方法是怎么绑定到一起的,其内部是怎么实现的。

7)其他遇到问题:

介绍下栈和队列。

IO和NIO的区别。

接口和抽象类的区别。

int和Integer的自动拆箱/装箱相关问题。

常量池相关问题。

==和equals的区别。

重载和重写的区别。

String和StringBuilder、StringBuffer的区别。

静态变量、实例变量、局部变量线程安全吗,为什么。

try、catch、finally都有return语句时执行哪个。

介绍下B树、二叉树。

ajax的4个字母分别是什么意思。

xml全称是什么。

分布式锁的实现。

分布式session存储解决方案。

常用的linux命令。

一些经验:

1.先投一些普通公司,等面出了心得再去投理想的公司。

2.不熟悉的技术不要主动提。

3.对于那种实习期6个月还打8折的公司,除非你没有其他选择了,否则不要去。

4.小公司喜欢在薪水上压你,开的时候适当提高。

5.不要去参加招聘会,纯粹是浪费时间。

6.把面试当作一次技术的交流,不要太在意是否能被录取。

7.公司一般面完就决定是否录取了,让你回去等消息这种情况一般没戏,无论你自己觉得面的有多好。

8.尽量少通过电话面试,效果不好。

9.在面试的日子里,要保持每天学习,无论是学习新东西还是复习旧东西。

10.拿到offer了,问问自己这个公司让自己100%满意了吗,如果不是,请继续努力找更好的。

11.通过面试官可以大概判断这家公司的情况。

12.拉勾投的简历很多会被筛掉,但是拉勾还是面试机会的最主要来源。

13.理想的公司可以多投几次,我有好几次都是第一次投被筛掉,多投几次就过的经验。

14.问到自己有深入研究过的知识,抓住机会好好表现,不要轻易放过。

Java常见的面试问题(带答案),自己答出来多少

1、在java中如果声明一个类为final,表示什么意思?

答:final是最终的意思,final可用于定义变量、方法和类但含义不同,声明为final的类不能被继承。

父类的构造方法是否可以被子类覆盖(重写)?

答:父类的构造方法不可以被子类覆盖,因为父类和子类的类名是不可能一样的。

2、请讲述String和StringBuffer的区别。

答:String类所定义的对象是用于存放”长度固定”的字符串。

StringBuffer类所定义的对象是用于存放”长度可变动”的字符串。

3、如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢?

答:因为类A、B不是接口,所以是不可以直接继承的,但可以将A、B类定义成父子类,那么C类就能实现A、B类的功能了。假如A为B的父类,B为C的父类,此时C就能实现A、B的功能。

4、谈谈你对抽象类和接口的理解。

答:定义抽象类的目的是提供可由其子类共享的一般形式、子类可以根据自身需要扩展抽象类、抽象类不能实例化、抽象方法没有函数体、抽象方法必须在子类中给出具体实现。他使用extends来继承。

接口:一个接口允许一个类从几个接口继承而来,Java程序一次只能继承一个类但可以实现几个接口,接口不能有任何具体的方法,接口也可用来定义可由类使用的一组常量。其实现方式是interface来实现。

5、Java中什么是竞态条件?

答:竞态条件会导致程序在并发情况下出现一些bugs。多线程对一些资源的竞争的时候就会产生竞态条件,如果首先要执行的程序竞争失败排到后面执行了,那么整个程序就会出现一些不确定的bugs。这种bugs很难发现而且会重复出现,因为线程间的随机竞争。

6、Java中如何停止一个线程?

答:Java提供了很丰富的API但没有为停止线程提供API。JDK1.0本来有一些像stop(),suspend()和resume()的控制方法但是由于潜在的死锁威胁因此在后续的JDK版本中他们被弃用了,之后JavaAPI的设计者就没有提供一个兼容且线程安全的方法来停止一个线程。当run()或者call()方法执行完的时候线程会自动结束,如果要手动结束一个线程,你可以用volatile布尔变量来退出run()方法的循环或者是取消任务来中断线程。点击这里查看示例代码。

7、一个线程运行时发生异常会怎样?

答:简单的说,如果异常没有被捕获该线程将会停止执行。Thread.UncaughtExceptionHandler是用于处理未捕获异常造成线程突然中断情况的一个内嵌接口。当一个未捕获异常将造成线程中断的时候JVM会使用Thread.getUncaughtExceptionHandler()来查询线程的UncaughtExceptionHandler并将线程和异常作为参数传递给handler的uncaughtException()方法进行处理。

java面试题:一个人早上八点上山,晚上八点到达山顶。第二天早上八点下山,晚上八点到达山底。

java面试题的解析方式(思路如下):

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

intup=8;

intdown=8;

while(up=20){

if((up==20-6)(up==20-6)){

System.out.println("在"+up+"时到达同一地点");

break;

}

up+=1;

down+=1;

}

}

微软面试题的背后

微软的奇葩面试题答案并不重要,重要的是思考过程,而思考过程体现了你是否拥有公司所看重的能力,不仅是微软,其他公司的面试也是为了测试你的某种能力,如果你提前培养了这种能力,相当于知道了面试的“考纲”,在面试中自然就从容不迫,游刃有余了。

平时要知道转化能力是看透问题,然后找到解决方案的能力。所以转化能力最重要的是如何看透问题,也就是你思考问题的方式。




2017年香港大学法律专业解读
香港大学法律专业解析 香港与内地法律体系的不同,让大量内地法律人才有所顾虑,在申请来港深造的时候望而却步。恰恰是在这样的限制中,亦有港校内地法律生看到了挑战和机遇,凭借对两地法律知识的熟悉,在面试及实习中表现出色,因此获得国际律师行青睐,于毕业前已签订合同获公司聘用兼全费资助深造,向成为香港执业律师迈...

springmvc是微服务框架吗?
SpringMVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发 4.1SpringMVC面试必备题+解析 4.2SpringMVC学习笔记 (1)看透SpringMVC源代码分析与实践 (2)精通SpringMVC 最后分享一下一...

Java 实习生应具备哪些知识、能力?
01、Java基础 认真看一遍 Java核心技术卷一,会常见的集合类用法,最主要两个 ArrayList 和 HashMap,水平到可以刷 leetcode easy 和一些集合类操作的 medium 就OK。其中更进一步可以看看 ArrayList 的源码(这部分源码几乎没有什么难点),有助于理解接口和抽象类的使用。另外,针对目前主要的Java面试,...

前端和后端主要做什么?
后端开发主要做的是逻辑功能等模块,是用户不可见的。 知识结构:Web前端开发涉及到的知识主要有Html、CSS、avaScript、Android开发、iOS开发、各种小程序开发技术等。Web前端代码主要在客户端运行:后端开发以Java为例,主要用到的是StrutssprispringmvcHibernateHttp协议ServletTomcat服务器等技术,通常需要根据业务场景进行不同...

JAVA培训内容有哪些?
第二阶段企业框架级项目阶段是进阶阶段,增强Java基础、web基础、CSS\/JavaScript进阶、Maven项目管理、Spring5、SpringMVC、Mybatis、SMM综合项目、学员项目等,完成本阶段学员可以胜任各行业企业级项目中高级工程师岗位。第三阶段亿级大并发分布式项目阶段,掌握Linux、Docker、Vue、SpringBoot、项目整合Vue、...

java该怎么自学?
那么在这个过程中,可以多看看《Thinking in Java》这本书,对面向对象的讲解非常透彻。可惜的是我学习的时候,并没有看到这本书,所以自己花了大量的时间,通过自己的尝试和揣摩来学会的。 第四步就是开始熟悉Java的类库。 Java的基础类库其实就是JDK安装目录下面jre\/lib\/rt.jar这个包。学习基础类库就是学习 rt.jar...

Java培训的主要内容是什么?
课程的主要内容包括但不限于以下几个方面:1. Java基础:深入学习Java编程语言的基本概念、语法规则以及面向对象的思想。学员将了解Java的数据类型、运算符、流程控制、数组、字符串等基础知识,并通过实例演示加深理解。2. 面向对象编程:学习面向对象编程的原理和方法,掌握封装、继承、多态等重要特性的应用...

学习java需要什么基础?
1、熟练掌握java的开发环境与编程核心知识;2、熟练运用java面向对象知识进行程序开发;3、对java的核心对象和组件有深入理解;4、熟练运用javaAPI相关知识;5、熟练应用java多线程技术;6、能综合运用所学知识完成一个项目。知识点:1、基本数据类型,运算符,数组,掌握基本数据类型转换,运算符,流程控制...

学java能做什么工作
1、安卓Apps 如果你想知道Java应用在哪里,你离答案并不远。打开你的安卓手机或者任何的App,它们完全是用有着谷歌AndroidAPI的Java编程语言编写的,这个API和JDK非常相似。前几年安卓刚开始起步而到今日已经很多Java程序员是安卓App的开发者。2、在金融服务行业的服务器应用 Java在金融服务业有着很大应用...

Java培训班一般都教什么内容?
Java培训一般会教下面四种内容:1、掌握Java语言的使用:语言语法、程序逻辑,OOP(面向对象)思想,封装、继承、多态,集合框架、泛型、File I\\O技术,多线程技术、socket网络编程,XML技术。编程有关的操作系统基本使用,HTML5规范、HTML5文档结构、HTML5元素、Web语义化;CSS3规范、CSS3选择器、层叠与...

大东区14780666567: 常见的java面试题目是什么?
成萧枯草: 垃圾回收的优点和原理.并考虑2种回收机制. Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员...

大东区14780666567: java面试题解答 -
成萧枯草: int i = 20; j = i + 1; System.out.println(“j = ” + j); 这里的 j = i + 1; i是局部变量,用的是 i = 20 所以 j = 20+1 = 21

大东区14780666567: 作为一个面试官,我会问初级java工程师哪些问题? -
成萧枯草: 初级java工程师多数是刚毕业或者工作1,2年的新人.对于新人,面试中基础问题会问道很多,因为先要考察这个人的基础. 关于基础类的题目,我在面试初级java工程师的时候一般会问下面两大类问题,每类5个题目,这样下来我就基本可以了...

大东区14780666567: 在java面试中要注意哪些事情,大概会问哪些问题 -
成萧枯草: 不管是怎样的面试,都会考验你的基础扎实不..当然也许还会问你做项目中需要注意什么,你用过什么样的技术,遇到问题怎么解决的等等这类问题.总之,都取决于你的基础如何.

大东区14780666567: 请一些有面试经验的先辈们提供一些java的面试题,详细点最好.还有机试又是什么题目呢?
成萧枯草: Java面试宝典...开玩笑 呵呵 多看看基础的东西 J2SE的, 然后就是JAVAWEB的那些东西. 再然后就是关于SSH的一些常见问题. 再再然后就是练习写SQL,这是必考的. 机试的时候考基础的比较多,比如用流读取数据,写一个socket,多线程 啥的.可能还会让你实现AJAX~ 加油~!

大东区14780666567: 求最新JAVA面试题目,越全越好!!! -
成萧枯草: Java面试不光有面试也会有笔试,为了让java应聘笔试题能顺利通过,中公优就业·浙江IT培训的小U老师整理了一些java笔试题及答案分享给大家,准备或将要参加java面试的朋友可以仔细阅读,争取一次通过,进去自己心仪的企业工作. 一、...

大东区14780666567: 求问几个java面试题答案 谢了 -
成萧枯草: 1》 public static boolean isOdd(int n) {return ((n%2)!=0) ? true : false; }2》写的不够好,欢迎指正 String a = "AABBBCDwEFdGHIiiiiiJK"; List list = new ArrayList(); Map maps = new HashMap();for(int i=0;i String str = String.valueOf(a.charAt(i));...

大东区14780666567: 高级Java开发面试交流的要点有哪些 -
成萧枯草: 面试官提的问题: 1. 简要描述String、StringBuffer、StringBuilder的区别2. 描述一下JVM加载CLASS文件的原理机制3. Char型变量能否存储一个中文字?为什么?4. JAVA中实现多态有哪些方式?5. 写出你所知道的java.util.concurrent包中的类...

大东区14780666567: java经典面试题 -
成萧枯草: 整数划分问题正整数n的划分数p(n)=q(n,n)代码:public static int q(int n,int m){ if((n==1)||(n<1)) return 0; if (n<m return q(n,n)); if (n==m) return q(n,m-1)+1; return q(n,m...

大东区14780666567: 请列举一些Java常见的面试题
成萧枯草: 1.给我一个你最常见到的runtime exception2.Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 3.面向对象的特征有哪些方4.数据可连接池的工作机制5.EJB与JAVABEAN的区别6.运行时异常与一般异常的区别7.String与StringBuffer的区别...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网