又到了每年码友们换工作的高峰期,如何掌握面试技巧、以及面试会问哪些内容,是每个程序员都应该具备的技能。小编从网上搜寻了一些Java服务端开发面试可能会问到的题目加以汇总,希望对大家有所帮助。
自我介绍
面试的第一个环节都是自我介绍,言简意赅,搞技术的人不需要花里胡哨,不重要的地方不需要花费太多时间,以免产生不好的映像。
数据库
所有技术面试都会问到数据库内容,让你介绍Mysql、Oracle等特性,对于不同数据库之间的特点,这些都是老生常谈,从百度百科上背一些即可。
往下会问题到SQL的内容,比如左连接和右连接的区别,这种书本上的问题用一句话来回答即可:数据检索时,以左/右表为基础表,当左/右表有数据时才会检索出数据。
接下来可能还会问到数据库的索引,索引的概念,索引如何工作的,以及索引的利与弊。
数据库的视图也是一个知识点,为什么要用视图,视图的利与弊。现在大部分IT企业为何不用视图,为何视图难以维护等,这些问题都需要了解。
接着考官可能会问一些数据库的函数,如取最大值的max函数、按组连接的group_concat、时间格式化date_format等,一些常用的函数要牢记于心,起码面试前要记在自己的小本本上。
最后一个点是必问的,数据库的优化。当一个sql执行效果不佳,如何来优化?explain函数产生的结果如何分析?这些面试前一定要准备好,起码百度上看一下。
Java核心
这块内容就海了去了,也没必要记太多,知道一些常用的知识点其实就够了。
面试倍问题目最多的可能要数这个:数组、List、map的区别?这个问题即使是有五年工作经验的人,不提前准备下也很难回答的好。数组是固定长度的,list不固定,map是基于key-values进行映射的。访问元素数组可以通过下标访问,list需要遍历,map可以通过Key值获取map的values。在往深层次的说,就涉及到源码了,作为一个没仔细看过源码的人,就不在此BB了。
线程,这也是面试必问知识点。线程的含义,百度百科了解下。线程的实现方式:继承Thread类;实现Runnable,然后重写run方法;通过Callable和Future创建线程。第三种实现方式比较少见,但这是加分点。同时不同创建方法的区别:一个类只能继承一个父类,如果已经继承了Thread,就无法继承其他的了,所以一般用Runnable;使用Runnable可以避免点继承的局限,一个类可以继承多个接口。
Callable和Runnable比较相似,但运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。这三者各有优缺点,真的要聊清楚,可能要写一本书。
既然谈到了线程,就不得不说多线程。多线程的实现方式,每种实现方式的利与弊,如何根据业务来使用不同的实现方法,如何根据虚拟机的性能来优化Tomca使得更好的使用多线程,多线程能说的内容会更多。
由于篇幅有限,剩下的内容下次再说吧。