1:JDK和JRE的区别?
JDK:是java的开发工具包,里面包含了各种类库和工具
JRE:是java程序的运行环境
2:java支持的数据类型有哪些?什么是自动拆装箱?什么时候自动装箱不起作用?
2.1java中的8种基本数据类型:boolean byte char short int float double long
2.2:基本数据类型和它对应的封装类型之间可以相互转换,从基本数据类型到封装类
型叫做装箱,从封装类型到基本数据类型叫拆箱,自动拆装箱是jdk5.0提供的新特特性
2.3当我们要调用的方法中存在重载的时候,即基本类型数据作为唯一参数的方法与
该基本类型包装类作为唯一参数的方法重载,这时候自动装箱不起作用。
3:进程和线程的区别?
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,
一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个程序至少有一个进程,一个进
程至少有一个线程。
4:创建线程有几种不同的方式?你喜欢哪一种?为什么?
继承Thread类
实现Runnable接口
应用程序可以使用Executor框架来创建线程池
实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这
需要多继承(而Java不支持多继承),只能实现接口。
同时,线程池也是非常高效的,很容易实现和使用。
5:如何确保N个线程可以访问N个资源同时又不导致线程死锁?
使用多线程时,一种非常简单的避免死锁的方式就是:指定锁的顺序,并强制线程按照指定的顺序获取锁。因此所有的
线程都是以同样的加锁和释放锁,就不会出现死锁了
6:Iterator和ListIterator的区别是什么?
一、ListIterator有add()方法,可以向List中添加对象,而Iterator不能。
二、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。
三、ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator 没有此功能。
四、都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改。因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。
7:HashMap和HashTable有什么区别?
8:如何权衡是使用无序的数组还是有序的数组?
有序数组最大的好处在于查找的时间复杂度是O(log n),而无序数组是O(n)。有序数组的缺点是插入操作的时间复杂度是O(n),因为值大的元素需要往后移动来给新元素腾位置。相反,无序数组的插入时间复杂度是常量O(1)。
9:HashSet和TreeSet有很么区别?
10:Java中垃圾回收有什么目的?什么时候进行垃圾回收?
目的:回收堆内存中不再使用的对象,释放资源
回收时间:当对象永久地失去引用后,系统会在合适的时候回收它所占的内存
11:finally代码块和finalize()方法有什么区别?
无论是否抛出异常,finally代码块都会执行,它主要是用来释放应用占用的资源。finalize()方法是Object类的一个protected方法,它是在对象被垃圾回收之前由Java虚拟机来调用的
12:解释一下Applet的生命周期?
ava applet是能够被包含在HTML页面中并且能被启用了java的客户端浏览器执行的程序。Applet主要用来创建动态交互的web应用程序。
13:弹出式选择菜单(Choice)和列表(List)有什么区别?
Choice是以一种紧凑的形式展示的,需要下拉才能看到所有的选项。Choice中一次只能选中一个选项。List同时可以有多个元素可见,支持选中一个或者多个元素。?
14:说出三种之处重绘(painting)的组件
15:什么是Servlet?
其主要功能在于交互式地浏览和修改数据,生成动态Web内容
servlet就是你写在容器(如tomcat)里的动态资源,远程客户端点击或者一个url请求会封装成一个http请求
,到你的服务端后由容器解析http请求,并封装为java servlet请求和响应,
最后放进servlet的service方法根据请求作出服务。
16:doGet()方法和doPost()方法有什么区别?
17:什么是web应用程序?
Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。
18:什么是servlet链(Servlet Chaining)
Servlet链是把一个Servlet的输出发送给另一个Servlet的方法。第二个Servlet的输出可以发送给第三个Servlet,依次类推。链条上最后一个Servlet负责把响应发送给客户端。
19:HTTP响应的结构是什么样的?
状态码(Status Code):描述了响应的状态。可以用来检查是否成功的完成了请求。请求失败的情况下,状态码可用来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。
HTTP头部(HTTP Header):它们包含了更多关于响应的信息。比如:头部可以指定认为响应过期的过期日期,或者是指定用来给用户安全的传输实体内容的编码格式。如何在Serlet中检索HTTP的头部看这里。
主体(Body):它包含了响应的内容。它可以包含HTML代码,图片,等等。主体是由传输在HTTP消息中紧跟在头部后面的数据字节组成的。
20:什么是cookie? session和cookie有什么区别?
cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。下面列出了session和cookie的区别:
21:浏览器和servlet通信使用的是什么协议?
浏览器和Servlet通信使用的是HTTP协议。
22:什么是URL编码和URL解码?
23:什么是jsp页面?
24:什么是JDBC?
JDBC是允许用户在不同数据库之间做选择的一个抽象层。JDBC允许开发者用JAVA写数据库应用程序,而不需要关心底层特定数据库的细节。
25:Class.forName()方法有什么作用?
26:什么是隐式类型转换?什么是显示类型转换?
27:&& 和 &的区别,|| 和 | 的区别?
28:解释一下什么是类方法,什么是实例方法?
29:简述方法和变量的命名规则?
30:什么是方法重载?
31:如何创建一个对象?
32:简述Java的访问权限?
33:简述什么是对象上转型?
34:上转型对象可以操作什么?不可以操作什么?
35:已知一个java.util.Date对象,如何格式化成如下格式:YYYY-MM-dd hh:mm:ss
36:简述如下关键字用途 try、catch、throw、throws、finally?
37:File f = new File("myfile.dat"); FileInputStream istream = new FileInputStream(f)如何从流中获取数据?
38:实现多线程的两种方法?
39:构造方法能否被重写?为什么?
40:常用的对称加密算法有哪些?非对称加密算法有哪些?
41:session失效有哪几种方法,session的过期时间默认是多少?在哪里配置?
sessionid丢失、服务器关闭、session过期、session.removeAttribute()
默认30分钟
web.xml 配置 session-config -> session-timeout
42:如何获取Oracle序列seq_order的当前值,请写出sql语句。
43:spring是如何管理事物的?
44:通过get和post提交表单的区别是什么?
45:常用的防止页面重复提交的方式有哪些?请简要说明
46:服务端如何获取客户端的ip地址
47:java常用的加密算法有哪些?
48:简要说明 List、set和map的区别?
49:如何处理内存溢出?
50:HashMap底层实现
51:mysql 引擎MyISAM 和 InnoDB的区别?
52:一条特别长的sql执行速度特别慢,怎么去优化它?
53:spring bean的五个作用域?
54:如果HashMap的大小超过了负载因子定义的容量,怎么办?
55:JVM优化
56:tomcat优化
一、Tomcat内存优化
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本
catalina.sh 中设置 java_OPTS 参数,
-server 启用jdk 的 server 版;
-Xms java虚拟机初始化时的最小内存;
-Xmx java虚拟机可使用的最大内存;
-XX: PermSize 内存永久保留区域
-XX:MaxPermSize 内存最大永久保留区域
配置说明模板:
JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m
-XX:MaxPermSize=256m’
二、Tomcat并发优化
server.xml
在Connector标签里配置
maxThreads 客户请求最大线程数
minSpareThreads Tomcat初始化时创建的 socket 线程数
maxSpareThreads Tomcat连接器的最大空闲 socket 线程数
enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
connectionTimeout 连接超时
minProcessors 服务器创建时的最小处理线程数
maxProcessors 服务器同时最大处理线程数
URIEncoding URL统一编码
三、Tomcat缓存优化
compression 打开压缩功能
compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB
compressableMimeType 压缩类型
connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间
参考文章:http://blog.csdn.net/sxj_world/article/details/78454420
57、你们工作中采用什么架构,如何设计,为什么搭建这样的架构,解决了哪些问题
58、jvm优化和tomcat优化你们怎么做的,参数之间配置的关系,并发量如何设计和计算出所需负载均衡服务器
59、高并发你们如何解决的,缓存有哪些,如何设计适合自己的缓存
60、你在项目中涉及到那些需要多线程,线程受那些因素影响,举例说明
61、锁有哪些,线程锁有哪些,多线程中如何合理使用,举例说明
62、分布式锁的原理,进程之间如何共享锁,redis和zk分布式锁的优缺点,举例说明他们适合的场景
63、如何合理设计架构,重构系统如何实现,新系统如何实现,如何让代码重用性更高,让拓展性更好
64、23种设计模式如何在项目应用,6种原则架构中如何考虑,举例说明
65、同步和异步远程调用会出现哪些异常,如何解决重试和异步调用失败的问题
66、业务系统和架构是相互联系的,如何合理的规划业务和架构,根据你的经验举例说明
67、数据库方面:数据库表设计原则、数据库锁、索引的应用优化,举例说明
68、分库分表解决那些问题,带来哪些问题
69、主从复制你们采用哪些技术,mycat用过吗,对事务的支持如何做到最优化配置
70、mycat做分布式数据库如何监控和确保数据同步不丢失
71、mongodb删除功能在高并发中会出现问题吗,你如何解决
72、系统上线后你采用哪些工具进行监控,如何做到容灾设
73、在项目中采用过哪些消息队列,如何进行流式监控,丢失消息如何处理,kafka跟其他的优缺点
74、设计好架构和业务后你如何安排人员,说说你的方案
75、总结一下你对管理中的方法和思路 最近常见面试问题
逻辑思维问题
1:有A B C D 四个少女,她们正在接受训练已便成为预言家,实际上,后来她们之中只有一个成为了
预言家,并在特尔斐城谋得一职位,其余三人,一个当了职业舞蹈家,一个当了宫廷侍女,第三个当
了演奏家,一天,她们四个人在练习预言。
A预言:“B 无论如何也成不了职业舞蹈家”
B预言:“C将成为特尔斐城的预言家”
C预言:“D不会成为演奏家”
D预言:“我将嫁给一个叫阿特的男人”
可是,事实上她们四个人中,只有一个人的预言是正确的,而这个人当了特尔斐城的预言家,能分析出
这四个人的职业吗?
POI十万
优化
nginx + tomcat 配置 代码