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 配置 代码