1.如何处理高并发
①尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
②用jprofiler等工具找出搜索性能瓶颈,减少额外的开销。
③优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。
④优化数据库结构,多做索引,提高查询效率。
⑤能使用静态页面的地方尽量使用,减少容器的解析
2.JVM垃圾回收机制
3.垃圾回收有哪几种算法
3.JVM体系结构
①程序计数器:由于Java虚拟机的多线程时通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,
我们称这类内存区域为“线程私有”的内存。
如果线程正在执行的时一个Java方法,这个计数器记录的时正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值则为空。此内存区域时唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。
②Java虚拟机栈:与程序计数器一样,Java虚拟机栈也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表,操作数栈,动态链表,方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程
③本地方法栈:本地方法栈与虚拟机栈所发挥的作用时非常相似的,它们之间的区别不过是虚拟机栈为虚拟机执行Java方法服务,而本地方法栈则为虚拟机使用到的Native方法服务。
④Java堆:对于大多数应用来说,Java堆时Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动是创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配,但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配,标量替换优化技术将会导致一些微妙的变化发生,所有的对象都分配在堆上也渐渐变得不是那么“绝对”了
⑤方法区:方法区与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做非堆,目的应该是与Java堆区分开来。
⑥运行时常量池:运行时常量池是方法区的一部分。Class文件中除了有类的版本,字段,方法,接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种字面量和符号的引用,这部分内容将在类加载后进入方法区的运行时常量池中存放
4.线程的几个状态
新建状态
就绪状态
运行状态
阻塞状态
死亡状态
5.JVM在类初始化阶段(即在Class被加载后,且被线程使用前),会执行类初始化。在执行类初始化期间,JVM会获取一个锁。这个锁可以同步同步多个线程对同一个类的初始化
6.数据库索引的实现原理
索引的代价:http://blog.csdn.net/kennyrose/article/details/7532032
索引的好处:
7.Error与Exception都是派生自Throwable
①派生自Error的类代表不是由程序错误引起的非正常情况,表示程序执行期间通常不会发生的事情,如JVM耗尽内存等。一般而言,应用程序不能从Error恢复,因此不必处理它们。
②派生自Exception的类
8.String, StringBuilder,StringBuffer
①StringBuilder类具有与旧的StringBuffer类完全相同的b方法,但是String,Builder更快,因为它的方不是同步的
②在java中,字符串内的每个字符都时一个16位的Unicode字符。由于Unicode字符时16位的(不是ASCII码提供的7位或8位),所以用Unicode能够轻松地表示丰富的国际化字符集
③一旦创建了一个String对象,就永远不能再更改
④关于String和内存的重要事实:
对程序而言,全部String字面值中往往有大量的冗余。为了使Java更高效地使用内存,JVM留出一块特殊的内存区域,称为“String常量池”。当编译器遇到String字面值时,它检查该池内是否已经存在相同的String字面值。如果找到,则将心的字面值的引用指向现有的String,而不创建任何心的String字面值对象(现有的String只是具有一个额外的引用)
8.Spring并发处理
http://blog.csdn.net/java_fancy/article/details/7439657
http://blog.csdn.net/cs408/article/details/47809271
9.ArrayList是不是线程安全的
10.Struts2,hibernate,Spring框架中使用了哪些设模式
11.ThreadLocal
相关推荐
### Grokking the System Design Interview #### 知识点概览 - **系统设计面试流程** - **设计URL缩短服务(如TinyURL)** - **设计Pastebin** - **设计Instagram** - **设计Dropbox** - **设计Facebook Messenger*...
《Grokking the System Design Interview》是一本专为软件工程师准备的系统设计面试指南,它旨在帮助面试者克服在系统设计面试中遇到的挑战。系统设计面试(SDIs)通常包含非固定性问题,需要面试者面对开放性、无...
标题《nail the job Interview》和描述《Nail the Job Interview 101 Dynamite Answers to Interview Questions》以及标签《101 Dynamite Answers to Interview》表明这本书的主要内容是关于面试技巧,特别是提供了...
### Cracking the Code Interview:全面解析 #### 一、书籍概览 《Cracking the Coding Interview》是一本针对软件工程师面试准备的专业书籍,由Gayle Laakmann McDowell撰写,她同时也是CareerCup.com的创始人兼...
《探索系统设计面试》这本书,英文名为《Grokking the System Design Interview》,是为那些希望在面试中展现出卓越系统设计能力的程序员所准备的。系统设计能力是衡量一个程序员是否优秀的重要标准,尤其是在大型...
Cracking the IT Architect Interview English | 30 Nov. 2016 | ISBN: 1787121690 | 372 Pages | AZW3/MOBI/EPUB/PDF (conv) | 22.09 MB Key Features Learn about Enterprise Architects IT strategy and NFR –...
《Grokking the Coding Interview - Patterns for Coding Questions》是一份专为北美算法面试准备的压缩包资源,其中包含了多种常见的编程题目模式。这份资源旨在帮助面试者熟练掌握各种算法和数据结构,以便在面试...
文件内容提到了《Cracking the Coding Interview》第六版,这本书的作者是Gayle Laakmann McDowell,她是CareerCup公司的创始人和CEO。这本书专注于技术面试准备,特别是针对软件工程和产品管理的职位。 从文件内容...
"Coding Interview Questions" is a book that presents interview questions in simple and straightforward manner with a clear-cut explanation. This book will provide an introduction to the basics. It ...
Now in the 5th edition, Cracking the Coding Interview gives you the interview preparation you need to get the top software developer jobs. This is a deeply technical book and focuses on the software ...
### Cracking the Coding Interview #### 一、书籍概述 《Cracking the Coding Interview》是由Gayle Laakmann McDowell撰写的一本关于软件工程师面试指南,该书为第四版。本书全面深入地介绍了软件工程师在面试...