搜档网
当前位置:搜档网 › java面试题知识点总结

java面试题知识点总结

java面试题知识点总结
java面试题知识点总结

1. 为何要使用同步?

java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。

(1)同步方法:即有synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。

代码如:

public synchronized void save(){}

注:synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类

(2)同步代码块:即有synchronized关键字修饰的语句块。被该关键字修饰的语句块会自动被加上内置锁,从而实现同步

代码如:

synchronized(object){

}

注:同步是一种高开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个方法,使用synchronized代码块同步关键代码即可。

2.说好拿到offer就来牛客发面经,实现承诺

一面:

1.说说C语言中free和malloc区别

不知道。我不是学C的。

2.你知道基数排序么?

忘了,知道计数。

(这时候心想玩了,连续2个问题都不会,还玩个P?)

3.说说什么是内存溢出和内存泄露

内存溢出:介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明

内存泄露:介绍GC 和GC Root不正常引用。

4.看来你对JVM蛮熟悉的啊,那你说说JAVA怎么分配直接内存?

A:JAVA不能直接分配内存吧?

Q:我说是分配直接内存不是直接分配内存。

A:是NIO类的直接内存么?

Q:是的。

A:有点不记得了,能提示下么?

Q:sun的一个包。

A:我想起来了,sun.misc.Unsafe类,那个要通过反射获取吧。平常没怎么用过。

Q:不用反射

A:我咋记得要。

Q:不用的,你再回去看看看(面试官记错,后面他自己纠正错误了)

A:好吧。

5.介绍下NIO

6.能介绍下mybatis的原理么?

从configuration类说起,然后MapperStatement,然后SqlNode解析,然后连接池,然后resultMap映射,balala说了10分钟。

7.网络方面熟悉么?

A:熟悉

Q:那说说TCP/IP 三次握手

8.说说http,tcp,udp之间关系和区别。

9.说说浏览器访问https://www.sodocs.net/doc/4b15223721.html,,经历了怎样的过程。

二面、

1.讲讲spring IOC原理以及生命周期。

2.讲讲mybatis的连接池。

3.讲讲IO里面的常见类,字节流字符流。

4.讲讲NIO。

5.讲讲tomcat和你做的httpServer.

6.你是通过哪些途径学习这些技术。

7.你是否有想过把mybatis实现成分布式吗?

8.java的基础类型和字节大小。

3.很不幸,二面面完就结束了今天的面试。

预约的时间是下午4点30分到5点15分的时间段,天气比较闷热,算好时间,下午2点半从学校出发,3点50到达面试酒店,本想买瓶水,想想阿里这么大个公司,面试应该会给我们发瓶水的吧,于是我就没买,事实证明我想多了,没有!签完到去一个厅里面等候,左看看右看看,真没有水!人挺少的,没过几分钟,3点55分,叫到我的号去某某位置上面试,说好的4点半呢,人和人之间这么点信任都没有了吗?于是我气还没喘匀就去到面试的大厅了,,到了一个面试官跟前,坐下来,把我的简历给了他,他边看边让我自我介绍。一面:整整70分钟!(说好的45分钟呢?人和人之间这点信任都没有了吗?)

1、问:你把java内存模型的架构给我画一下吧?

我:迟疑了一下,心想,JMM这玩意儿有架构图吗?这可怎么画。面试官看我迟疑,说,那你不画,先说一说吧,我就跟他说了由于什么指令重排序,处理器缓存什么的,不同的系统或者平台有不同的内存模型,使得相同的java程序在不同的处理器架构下的表现不一致啊,java内存模型就是为了在不同的处理器架构和平台下给java程序员提供一致性内存访问的保证的。本以为后面要问到volatile的内存语义,内存屏障,happens-before之类的,

没想到面试官来了一句:你完全说错了,你说的这个是java的跨平台特性,不是内存模型,然后说内存模型是什么什么堆、栈之类的。于是我就懵了,我就想到了原来面试官理解的内存模型就是我理解的java运行时数据区域(程序计数器,虚拟机栈,本地方法栈、java 堆,方法区)。我也不敢跟面试官多争论,简单地表达了一下我的观点,然后他就接着问我,那你说说java是如何实现跨平台的。

2、问:说一下HashMap是如何实现的吧

我:就先画了一下结构,再说了一些什么拉链法解决冲突,什么JDK8里面冲突达到一定数量的时候就改用了红黑树的存储等等,然后问我怎么扩容。

3、问:说一下ConcurrentHashMap吧

我:JDK7里面采用的是分段锁机制什么的,读的时候不加锁,写的时候分段加锁,先定位到某个段,然后段里面的操作委托给HashMap等等。然后又说JDK8里面ConcurrentHashMap有很大变化,从1600多行代码扩充到了6000多行代码。(还好没接着问我JDK8里面是怎么实现的,就昨天晚上瞄了一眼,6000多行代码确实没看下来)4、问:用他的电脑给我看了一段程序,问我输出结果是什么,跟finally块相关的,考察点就是try块里面return了某个值,finally里面又对该值进行操作了,问最后的结果是什么,我知道return之前会先执行finally块里面的操作,但是操作的是引用类型还是值类型的情况是不一样的。本想把那个代码回忆起来,想想还是算了,应该有人能知道我说的是什么意思。我在回答这道题的时候面试官还“贱贱地“说这道题是有坑的,然后看我踩坑了还很鄙视的说一句:看那么多书连引用类型和值类型都搞不清楚。

5、synchronized相关的,为什么同步块太大会影响性能?不同的线程拥有不同的对象锁,它们之间会有影响吗?如果synchronized加在静态方法上面那么锁指的是什么?(在这个地方又跟面试官就几个名词纠缠了一会儿,我说锁是Class对象,他问是实例还是对象,他说实例是静态的,对象是动态的,我说Class是静态的,对象是动态的,然后他说我们不说类了,用英文,instance和对象,我说instance我理解的就是对象啊,可能他觉得instance 是指类,对象就是new出来的对象,也许是我没看过英文版的书吧)于是我接着说,指的是对象,是java虚拟机将一个类的字节码加载进内存之后生成的一个https://www.sodocs.net/doc/4b15223721.html,ng.Class对象,然后他可能没听明白我说的,还是在问,到底是类还是对象,我其实已经明白他的意思了,然后说,按照您的描述,那就是类。然后他好像满意了,就下一题了。(那明明就是一个Class对象嘛,Class对象不也是对象)

6、问:基本排序和查找相关的,问我有哪些排序和哪些查找算法,(期待让我写个快排什么的,早就憋在心里了,分分钟搞定的事,然而并没有)他让我描述一下选择排序的过程,就扯了扯,然后他问,你确定这是选择排序吗?我说,我很确定。(强调了“很”字,说的很坚决,他也没说什么,希望别又在理解上面跟我有偏差,我说的那个绝对是纯正的选择排序,如假包换)。

7、写代码,给我5分钟,让我实现一个Stack,底层数据结构用数组。我问他需要支持扩容吗,他说先不用。写完他拿过去一看,可能是我写的太丑了,他又还给我,让我解释一下代码,然后就解释了一下。

8、问我用栈怎么实现队列,我说用2个栈来实现,他问我具体怎么操作,我说我可以想一下吗?他说可以,然后我想了一下,画个图给演示了一下。

9、问我有没有登过网页版微信,问我用手机扫二维码登录是怎么实现的。不会

10、问我知道阻塞队列吗,让我自己实现阻塞队列我会怎么做?我说我会用两种方法来实现,一种是用wait和notify的方式,一种是用Condition条件变量的方式,然后他问怎么用wait和notify实现,我就把思路说了一下。

最后他还问我是什么时候接触编程的,我说大一。我不知道他最后问了我一个这个问题是什么意思

就想起来这么些了,整整70分钟,我已经说的口干舌燥了。面试完,他说,今天的面试结束了,我顿时就懵了,按照我了解的,这就代表没通过的意思,但是我觉得我答的很好,百分之九十都答出来了,而且很多都说的很详细。我一脸疑惑,还是很客气的说谢谢,准备走呢,马上又听到他说,你先到外面等一下,然后我又说好的,谢谢。然后他接着说,准备下一轮吧,我说好的,谢谢。然后就出来了。

出来之后到了等候的大厅,整个人都虚脱了,又左看看,右看看,还是没有水,没过几分钟,元气还没恢复,让我去二面

二面:45分钟。拖着疲惫的身子,走到二面面试官前,一见其人,明显能感受到这就是大神,那拖鞋,那发型,那胡子,此时我已经身心俱疲,硬着头皮坐下来,先自我介绍,问了几个问题,然后说那我们写一个简单的题目吧。他把电脑转过来,让我看其中某个题目,说你做一下这道题吧。

用java统计一个文本文件中出现的频率最高的20个单词。多经典的题目啊。我问能用shell 命令来实现吗?他说用java。于是我用了HashMap,都弄到map里面去了之后,我发现我不会排序。集合类里面的排序方法确实没怎么用过,于是我就卡在这里了。然后我跟他说我数据结构选错了,我应该选能排序的map,比如说TreeMap,他说那你接着写,我又不想写了,因为我只是知道TreeMap是怎么一回事,并没有去用过这个TreeMap,而且排序的话它应该是按照key来排序的,我这里的key是单词,并没有什么用,我也不知道该怎么按照后面的value来排序,我也想到可以调用map的entrySet方法得到一个集合,然后我可以对这个集合进行操作,总之我想了很多,但是对一些操作不太熟就没有继续下去了。我觉得这道题目应该很简单啊,没想到我竟然没写出来。其实方法还是有的,map都拿到了,排个序岂能难倒我,大不了再倒腾一下,我冒泡也能给它解决了,但是我实在是不想用这么low的方式,然后我就放弃了,没接着写。然后面试官说,好的,那我们再来写一个简单的题目吧。题目大概意思就是用面向对象的思想实现题目说的那个场景,具体题目就不说了,我并没有太明白题目的意思,感觉可以用一个HashMap的数据结构来实现,然后我就自己照着HashMap的代码写了写,写了点我又停下了,因为我并没有太理解题目的意思,所以我也不知道该怎么写,于是我又放弃了,真要我实现一个HashMap我也是可以写出来的,毕竟源码我看过很多遍了,一是想到有点麻烦,二是想到我可能没正确理解题目的意思,然后我就放弃了,放弃了,弃了,了。两道题目下来,我心理已经被击溃了,然后他问我有没有研究java方面的新技术,问我想从事哪一方面的开发,问我阿里云,淘宝等等这些有没有对哪个比较有意向,这个时候的我意识已经开始模糊了,话也说不清楚了,舌头也捋不顺

了,这几个开放性的问题答的我都恨不得抽死自己。

总之,一面给自己打90分,二面给自己打20分

经验就不说了,没什么好的经验

教训就说一下吧:面试之前带好水(之前牛客上有篇面经提到过要带水的,我没有听那位兄弟的话。也可能是有水我没看到吧)

对于面经里面的题目没必要太看重,每个人遇到的问题肯定是很大不同的,除了一些太常见的题目,比如HashMap,ConcurrenthashMap之类的,就像很多面经里面提到的数据库,网络方面的问题,我这次面试就提都没提这方面的东西。对于面经我们可以从中看看哪些大的方面在面试的过程当中会问的比较多,然后可以在这些方面加强学习。大方面比如说JVM,java多线程,TCP,数据库等等。面经就好比是给我们划了重点,我们需要把相关的知识都好好看一下。感谢那些提供面经的同学,指明了我应该学习的方向,所以在这里也算是反馈一下牛客网,几个月来确实让我学到了很多,希望校招之后能有机会来分享一下成功的面试经历。

虽然失败了,但我觉得该,自己的能力还是有所欠缺的。不管怎么样,这次面试虽然停止了,但是奋斗是不会停止的。

-----------------又想起来一些问题,补充一下---------------

1、ArrayList和LinkedList相关的,问分别在什么情况下使用,以及查找一个元素的话这两个的时间复杂度分别是多少(如果是调用contains(Object o)方法的话复杂度都是O(n),如果是根据下标进行查找的话ArrayList的时间复杂度是O(1),LinkedList是O(n))。

2、java 线程有哪些状态,这些状态之间是如何转化的。

3、linux命令相关的。将当前目录下所有以“.txt”结尾的文件打印出来,再追问,除了“.txt”

再加上“.abc”结尾的也打印出来。

4、有两个线程A和B,如果一个线程要等另一个线程执行完,该怎么做。(我说在ThreadA 中调用ThreadB.join()方法,二面面试官问我入参呢?我说我见过的join方法没有要传入参的啊,可能面试官记错了,他也没说什么。被这么一搞我又虚了,面试官怎么能质疑我呢,我好怕。后来我回来看了一下Thread类的源码,里面有三个join方法,分别是

join(); join(long millis); join(long millis, int nanos),后面两个方法含义是一样的,只不过是精度不同,都是指等待一定时间,而不带参数的join方法里面直接调用的是join(0),即调用了带参的join方法,该方法如果参数是0的话就代表一直等待下去直到所等待的那个线程执行完,所以我推断面试官问我入参可能是想让我说入参为0,其实入参为0和没有参数含义是一样的。)

5、List接口和Set接口的区别,(说了2个区别,一直被二面面试官说“还有还有”,那种淡定的语气,我又开始慌了,心想果然是大神,不好糊弄啊)

6、Spring相关的,问我要把一个组件注入到Spring中该怎么做?我说可以用配置文件和注解的方式,他问我有哪些注解,我说@Controller,@Service等等,他说我说的都是Spring MVC里面的。然后我就没说话,我也不知道面试官想让我说的是什么。又被质疑,又慌了。

7、Cookie和Session的区别

8、如何获取一个网站每天的访问用户数

9、自己定义的类如何实现hashCode方法

10、equals方法和hashCode方法相关的,问如果要向集合中添加自定义类的对象该怎么做?(在类中重写equals方法和hashCode方法)

java经典面试题汇总

Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √√√√ protected √√√ × friendly √√ × × private √ × × × 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JA V A的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的 7、String s = new String("xyz");创建了几个String Object 答:两个,一个字符对象,一个字符对象引用对象 8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少 答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor 9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错 答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(可以正确编译) 10、Java有没有goto 答:java中的保留字,现在没有在java中使用 11、数组有没有length()这个方法? String有没有length()这个方法 答:数组没有length()这个方法,有length的属性。String有有length()这个方法 12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

java高级工程师_面试题和答案

一:选择题 1. 关于以下程序代码的说明正确的是( D ) 1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic( ); 5. hs1.x++; 6. HasStatic hs2=new HasStatic( ); 7. hs2.x++; 8. hs1=new HasStatic( ); 9. hs1.x++; 10. HasStatic.x- -; 11. System.out.println(“x=”+x); 12. } 13. } A、 5行不能通过编译,因为引用了私有静态变量 B、 10行不能通过编译,因为x是私有静态变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 2. 下列关于for循环和while循环的说法中哪个是正确的?( B ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换 D.两种循环结构中都必须有循环体,循环体不能为空 3. 以下选项中循环结构合法的是( C ) A、while (int i<7) { i++; System.out.println(“i is “+i); } B、 int j=3; while(j) { System.out.println(“ j is “+j); } C、int j=0; for(int k=0; j + k !=10; j++,k++) { System.out.println(“ j is “+ j + “k is”+ k); } D、 int j=0; do{ System.out.println( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 4. 给出下面代码段, 哪行将引起一个编译时错误?( D )

常见的Java上机面试题

常见的Java上机面试题 在程序员面试中,主要的考试形式分为笔试和上机编程考试两部分。笔试主要考查面试者的基础是否牢固;上机考试主要考查面试者的实际开发能力和技术技巧。 上机编程考试,要求面试者能够根据题目的要求,使用一种编程工具,编写全部代码并调试运行。这主要是考查面试者代码书写和编程的熟练程度。值得注意的是,这类面试题要求能够正确运行,往往要求面试者使用比较原始的JDK编译方式也就是使用DOS命令提示符,而不是提供Eclipse或者JBuilder等快速开发环境。本章将经常出现的上机编程题进行分类,希望能够给读者带来帮助和启示。 17.1 Java基础编程试题(1) 在上机编程类的面试题中,大部分涉及基础编程,例如算法、语法、常用的类等知识点。 面试题1 怎样截取字符串 考题题干 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出"我ABC",而不是"我ABC+汉的半个"。 试题分析 本面试题容易产生困惑的是中文字符和英文字符,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,理解了这个,就很容易完成本题了。 参考答案 具体代码实现如下: 1.package core_java; 2.import java.util.Scanner; 3.public class InterceptionStr { 4.static String ss; //要进行截取操作的字符串 5.static int n; //截取的字符串的字节数 6.public static void main(String[] args) { 7. System.out.println("请输入字符串:"); 8. Scanner scStr = new Scanner(System.in); //从键盘获取字符串 9. ss = scStr.next(); // 将Scanner对象中的内容以字符串的形式取出来 10. System.out.println("请输入字节数:"); 11. Scanner scByte = new Scanner(System.in); //从键盘获取字符串 12. n = scByte.nextInt(); //将Scanner对象中的内容以数值的形式取出来

Java软件开发工程师笔试题(答案)

Java工程师笔试题 一、填空题(本大题10小题,每空1分,共20分)。 1.Java语言的三大特性即是: 继承、封装、多态。 2.在Java中,char 型采用____unicode_______编码方案,这样,无论是中文字符还是英文字符,都是占用__2___个字节的内存空间。 3. 形式参数指的是方法被__定义____ 时的参数行,实际参数是方法被__调用__ _ 时所传递进去的变量或值。 4.JSP内置对象中,application对象是代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息,而session 对象则是每个客户专用的。 5.如果想把一个对象写入一个流,那么这个类就必须实现Seralizable 接口。 6.程序中实现多线程的方法有两种:继承Thread类和实现___Runable _ 接口。 7.多线程中,可以通过调用相应的setPriority() 方法来修改一个线程的相对优先级。 8.面向对象编程的五大设计原则,分别是单一职责、开放封闭、 里氏替换、依赖倒置、接口分离 9.通过Ajax,客户端获取的数据主要有两种类型:文本型和xml 10.Socket通常也称为套接字,用于描述__ ip 和_ _接口 二、选择题(本大题20 小题,每小题2分.共40分)。 1.在JA V A中,如果父类中某些方法不包含任何逻辑,并且需要由子类重写.应该使用( )关键字来声明父类的这些方法: A) final B) static C) abstract D) void 2.在JA V A中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是()。 A) interface A extend B,C B) interface A implements B,C C) class A implements B,C D) class A implements B, implements C

复试理论力学重点面试问题知识点总

复试理力重点知识点总结 静力学 第一章静力学基础 1、掌握平衡、刚体、力的概念以及等效力系和平衡力系,静力学公理。 2、掌握柔性体约束、光滑接触面约束、光滑铰链约束、固定端约束和球铰链的性质。 3、熟练掌握如何计算力的投影和平面力对点的矩,掌握空间力对点的矩和力对轴之矩的计算方法,以及力对轴的矩与对该轴上任一点的矩之间的关系。 4、对简单的物体系统,熟练掌握取分离体并画出受力图。 第二章力系的简化 1、掌握力偶和力偶矩矢的概念以及力偶的性质。 2、掌握汇交力系、平行力系、力偶系的简化方法和简化结果。 3、熟练掌握如何计算主矢和主矩;掌握力的平移定理和空间一般力系和平面力系的简化方法和简化结果。 4、掌握合力投影定理和合力矩定理。 5、掌握计算平行力系中心的方法以及利用分割法和负面积法计算物体重心。 第三章力系的平衡条件 1、了解运用空间力系(包括空间汇交力系、空间平行力系和空间力偶系)的平衡条件求解单个物体和简单物体系的平衡问题。 2、熟练掌握平面力系(包括平面汇交力系、平面平行力系和平面力偶系)的平衡条件及其平面力系平衡方程的各种形式;熟练掌握利用平面力系平衡条件求解单个物体和物体系的平衡问题。

3、了解静定和静不定问题的概念。 4、掌握平面静定桁架计算内力的节点法和截面法,掌握判断零力杆的方法。 第四章摩擦 1、掌握运用平衡条件求解平面物体系的考虑滑动摩擦的平衡问题。 2、了解极限摩擦定律、滑动摩擦系数、摩擦角、自锁现象、摩阻的概念。 运动学 第五章点的运动 1、掌握描述点的运动的矢量法、直角坐标法和弧坐标法,能求点的运动方程。 2、熟练掌握如何计算点的速度、加速度及其有关问题。 第六章刚体的基本运动 1、掌握刚体平动和定轴转动的特征;掌握刚体定轴转动的转动方程、角速度和角加速度;掌握定轴转动刚体角速度矢量和角加速度矢量的概念以及刚体内各点的速度和加速度的矢积表达式。 2、熟练掌握如何计算定轴转动刚体的角速度和角加速度、刚体内各点的速度和加速度。 第七章点的复合运动 1、掌握运动合成和分解的基本概念和方法。 2、理解xx加速度的原理。 3、熟练掌握点的速度合成定理和牵连运动为平动时的加速度合成定理的应用。 4、掌握牵连运动为定轴转动时加速度合成定理和应用。

JAVA框架面试题汇总

1.SpringMVC Framework的理解: 1、它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件。并且和Spring提供的其他基础结构紧密集成 2、不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的) 3、可以任意使用各种视图技术,而不仅仅局限于JSP 4、支持各种请求资源的映射策略 5、它应是易于扩展的 2.简单的谈一下SpringMVC的工作流程? 流程? 1、用户发送请求至前端控制器DispatcherServlet? 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。? 3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。? 4、DispatcherServlet调用HandlerAdapter处理器适配器? 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。? 6、Controller执行完成返回ModelAndView? 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet? 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器? 9、ViewReslover解析后返回具体View? 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。? 11、DispatcherServlet响应用户 3.如何解决POST请求中文乱码问题,GET的又如何处理呢? 在web.xml中加入: . .CharacterEncodingFilter . .???? .????????encoding .?????? utf-8

2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

数据库面试基础知识总结

1. 数据抽象:物理抽象、概念抽象、视图级抽象,内模式、模式、外模式 提示: (1). 概念模式:(面向单个用户的) 是数据中全部数据的整体逻辑结构的描述。它由若干个概念记录类型组成。 (2). 外模式:(面向全局的) 是用户与数据库系统的接口,是用户用到的那部分数据的描述。它由若干个外部记录类型组成。(3). 内模式:(面向存储的) 是数据库在物理存储方面的描述,它定义所有的内部记录类型、索引、和文件的组织方式,以及数据控制方面的细节。 模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应与同一个模式可以有任意多个外模式。在数据库中提供两级映像功能,即外模式/模式映像和模式/内模式映像。对于没一个外模式,数据库系统都有一个外模式/模式映像它定义了该外模式与模式之间的对应关系。这些映像定义通常包括在各自外模式的描述中,当模式改变时,由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了

数据的逻辑独立性。数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而保证了数据的物理独立性。 2. SQL语言包括数据定义、数据操纵(Data Manipulation),数据控制(Data Control) 数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等 数据操纵:Select ,insert,update,delete,数据控制:grant,revoke 3. SQL常用命令 CREATE TABLE Student( ID NUMBER PRIMARY KEY, NAME VARCHAR2(50) NOT NULL);//建表 CREATE VIEW view_name AS Select * FROM Table_name;//建视图 Create UNIQUE INDEX index_name ON TableName(col_name);//建索引 INSERT INTO tablename {column1,column2,…} values(exp1,exp2,…);//插入 INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入视图实际影响表 UPDA TE tablename SET name=’zang 3’ condition;//更新数据 DELETE FROM Tablename WHERE condition;//删除 GRANT (Select,delete,…) ON (对象) TO USER_NAME [WITH GRANT OPTION];//授权

百一测评——Java经典面试题 带答案

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/4b15223721.html, 试卷名称:Java经典面试题带答案 试卷描述:java笔试题目、招聘笔试、微信考试、在线考试 试卷链接:https://www.sodocs.net/doc/4b15223721.html,/store/open/paperInfo/41651 试卷限时:50分 一.单项选择题 每题分值:2.5分 是否题目乱序:是 是否选项乱序:是 是否可回溯:是 难度:中 1.[单选]Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.[单选]下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code C.Java程序经编译后会产生DLL D.以上都不正确

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/4b15223721.html, 答案:B 3.[单选]下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名 C.constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 4.[单选]提供Java存取数据库能力的包是() A.java.sql B.java.awt C.https://www.sodocs.net/doc/4b15223721.html,ng D.java.swing 答案:A 5.[单选]下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.[单选]执行如下程序代码 a=0;c=0;

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/4b15223721.html, do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环 答案:C 7.[单选]下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.[单选]下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象

Java工程师面试题(含答案)

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗 基本数据类型包括byte、int、char、long、float、double、boolean和short。 类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和Integer 有什么区别 Java提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int 提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String 类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求

大数据库面试基础知识总结材料

1. 数据抽象:物理抽象、概念抽象、视图级抽象,模式、模式、外模式 提示: (1). 概念模式:(面向单个用户的) 是数据中全部数据的整体逻辑结构的描述。它由若干个概念记录类型组成。 (2). 外模式:(面向全局的) 是用户与数据库系统的接口,是用户用到的那部分数据的描述。它由若干个外部记录类型组成。(3). 模式:(面向存储的) 是数据库在物理存储方面的描述,它定义所有的部记录类型、索引、和文件的组织方式,以及数据控制方面的细节。 模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应与同一个模式可以有任意多个外模式。在数据库中提供两级映像功能,即外模式/模式映像和模式/模式映像。对于没一个外模式,数据库系统都有一个外模式/模式映像它定义了该外模式与模式之间的对应关系。这些映像定义通常包括在各自外模式的描述中,当模式改变时,由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了数据的逻辑独立性。数据库中只有一个模式,也只有一个模式,所以模式/模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变了,由数据库管理员对模式/模式映像做相应改变,可以使模式保持不变,从而保证了数据的物理独立性。 2. SQL语言包括数据定义、数据操纵(Data Manipulation),数据控制(Data Control) 数据定义:Create Table,Alter Table,Drop Table,Craete/Drop Index等 数据操纵:Select ,insert,update,delete, 数据控制:grant,revoke 3. SQL常用命令 CREATE TABLE Student( ID NUMBER PRIMARY KEY, NAME V ARCHAR2(50) NOT NULL);//建表 CREATE VIEW view_name AS Select * FROM Table_name;//建视图 Create UNIQUE INDEX index_name ON TableName(col_name);//建索引 INSERT INTO tablename {column1,column2,…} values(exp1,exp2,…);//插入 INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入视图实际影响表 UPDA TE tablename SET name=’zang 3’ condition;//更新数据 DELETE FROM Tablename WHERE condition;//删除 GRANT (Select,delete,…) ON (对象) TO USER_NAME [WITH GRANT OPTION];//授权 REVOKE (权限表) ON(对象) FROM USER_NAME [WITH REVOKE OPTION] //撤权 列出工作人员及其领导的名字: Select https://www.sodocs.net/doc/4b15223721.html,,https://www.sodocs.net/doc/4b15223721.html, FROM EMPLOYEE E S WHERE E.SUPERName=https://www.sodocs.net/doc/4b15223721.html, 4. 视图 提示: 计算机数据库中的视图是一个虚拟表,其容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查

Java经典面试题大全_带答案

Java经典面试题带答案一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code(字节码) C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器) D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A.Java.sql /sql/数据库还有Oracle 也是一种数据库 B.java.awt C.https://www.sodocs.net/doc/4b15223721.html,ng D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

java软件工程师面试题集

java软件工程师面试题集 EJB方面 1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS..... 2、EJB与JAVA BEAN的区别? 答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java 类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB 必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 3、EJB的基本架构 答:一个EJB包括三个部分: Remote Interface 接口的代码 package Beans; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Add extends EJBObject { //some method declare } Home Interface 接口的代码

IE工业工程师面试基本知识

IE工业工程师面试基本知识 一、工业工程:用系统工程学及管理学的思想方法对组织系统的功能结构和界面进行分析、设计、优化以解决用低成本与高质量的实现矛盾问题。 二、IE八大应用范围:工程分析、价值分析、动作研究、工作标准、时间研究、时间标准、工厂布置、搬运设计 三、工业工程八大目标:可获利性(Profitability)、有效性(Effectiveness)、高效(Efficiency)、 适应性(Adaptability)、响应性(Responsiveness)、高质量(High Quality)、持续改进(Continuous Improvement)、经济可承受行(Economic Affordability)。 四、工业工程八大意识:1、以人为中心意识2、问题改革意识3、全局意识4、简化意识5、成本效益意识6、快速响应意识7、持续改进意识8、创新意识。 五、工业工程七大手法:动改法、防错法、五五法、人机法、双手法、流程法、抽查法 六、工业工程九大浪费:库存浪费、搬运浪费、等待浪费、加工浪费、动作浪费、缺陷浪费、缺货浪费、积压浪费、管理浪费 七、标准工时=实测时间×评核系数×(1+宽放率) take time[color=#000000] (生产节拍,这个非常重要,笔者在初入职场面试时数次被人问到这个问题)[/color]八、生产线平衡率=各工序时间总和/(最长工序时间*人数) (其中:最长工作时间(pitch time)=生产线循环周期(cycle time)简称:CT) 九、NPI (New Product Introduction) 新产品导入步骤: 1.产品信息的收集(BOM,Gerber及客户品质要求); 2.Team work(新产品可行性评估); 3.PM会议分配工作(各部门执行责任本职工作); 4.PE建立BOM表,工治具的申购,及编写作业流程,SOP作业文件; 5.量产(问题反馈及跟踪改善); 6.正式投入生产. 十、QC七大手法:一、关系图法,二、归类合并图法(KJ法),三、系统图法,四、矩阵图法,五、矩阵数据分析法,六、过程决定程序图(PDPC法),七、矢线图法。 十一、精益生产的12条原则:一、消除八大浪费,二、关注流程,提高总体效益,三、建立无间断流程以快速应变,四、降低库存,五、全过程的高质量,一次做对,六、基于顾客需求的拉动生产,七、标准化与工作创新,八、尊重员工,给员工授权,九、团队工作,十、满足顾客需要,十一、精益供应链,十二、“自我反省”和“现地现物”。

Java经典面试编程设计题(含答案)

1、程序实现目标:输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符。 1. package com.iotex; 2. public class StringParseASCII { 3. 4. public static void main(String[] args) { 5. System.out.print(stringParseASCII("abx")); 6. } 7. 8. public static String stringParseASCII(String str){ 9. StringBuffer result = new StringBuffer(); 10. char tmp; 11. for(int i = 0;i 'z') { 14. result.append('a'); 15. }else { 16. result.append(tmp); 17. } 18. } 19. 20. return result.toString(); 21. } 22. 23. } 1. package com.iotex; 2. 3. public class StringParseASCII { 4. 5. public static void main(String[] args) { 6. System.out.print(stringParseASCII("abx")); 7. } 8. 9. public static String stringParseASCII(String str){ 10. StringBuffer result = new StringBuffer(); 11. char tmp; 12. for(int i = 0;i 'z') { 15. result.append('a'); 16. }else { 17. result.append(tmp);

Java工程师面试题(三大框架)

Java工程师(程序员)面试题 Struts,Spring,Hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作6.提交事务7.关闭Session 8.关闭SesstionFactory 为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2.Hibernate是如何延迟加载? 1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection) 2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many 4.Struts1流程: 1、客户端浏览器发出HTTP请求。 2、根据web.xml配置,该请求被ActionServlet接收。 3、根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。 4、是否验证,需要验证则调用ActionForm 的validate方法,验证失败则跳转到input,成功则继续。 5、Action从ActionForm获得数据,调用javabean 中的业务方法处理数据。 6、Action返回ActionForward对象,跳转到相应JSP 页面或Action。 7、返回HTTP响应到客户端浏览器。 MVC设计模式:modal:“模型”也称业务逻辑,是正真完成任务的代码,相当与JavaBeanview:视图,其实就是显示界面,相当于JSPcontroller:控制器,他控制模型和视图的交互过程,相当于servletstruts1是基于MVC设计模式hibernate是基于ORM对象关系映射 5.struts是什么? struts1是基于JSP和servlet的一个开源的Web应用框架,使用的是MVC的设计模式struts2是基于webwork技术的框架,是sun和webwork公司联手开发的一个功能非常齐全的框架,struts2和struts1没有任何关系,是一个全新的框架 6.spring是什么? spring是一个集成了许多第三方框架的大杂烩,其核心技术是IOC(控制反转,也称依赖注

相关主题