Java知识问题汇总

1、面向对象的基本特征:
答:三个基本特征:封装(Encapsulation),继承(Inheritance),多态(polymorphism)

2、方法重载和方法重写的概念和区别

3、接口和内部类、抽象类的特性

4、文件读写的基本类

5、串行化的注意事项以及如何实现串行化

6、线程的基本概念、线程的基本状态以及状态之间的关系

7、线程的同步、如何实现线程的同步

8、几种常用的数据结构及内部实现原理。

9、Socket通信(TCP、UDP区别及Java实现方式)

10、Java的事件委托机制和垃圾回收机制

11、JDBC调用数据库的基本步骤

12、解析XML文件的几种方式和区别

13、Java四种基本权限的定义

14、Java的国际化

15. 数据类型之间的转换:如何将数值型字符转换为数字(Integer,Double)、如何将数字转换为字符、如何去小数点前两位,并四舍五入。

16. 文件和目录(I/O)操作:如何列出某个目录下的所有文件、如何列出某个目录下的所有子目录、判断一个文件或目录是否存在、如何读写文件

17. Java多态的实现(继承、重载、覆盖)

18. 编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。

19. Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。

20、简述this的功能和用法

21、ArrayList和Vector的区别?

答: ArrayList是线程不安全的,当多条线程访问同一个ArrayList集合时,如果有超过一条线程修改了ArrayList集合,则程序必须手动保证该集合的同步性。但Vector集合则是线程安全的,无须程序保证该集合的同步性。因为Vector是线程安全的,所以Vector的性能比ArrayList的性能要低。实际上,即使需要保证List集合线程安全,同样不推荐使用Vector实现类,Collections工具类可以将一个ArrayList变成线程安全的。

22、==和equals的区别

答:当使用==来判断两个变量是否相等时,如果2个变量是基本类型的变量,且都是数值型,则只要两个变量的值相等,使用==判断就将返回true,但对于两个引用类型的变量,必须它们指向同一个对象时,==判断才会返回true。==不可比较类型上没有父子关系的两个对象。

String的equals()方法判断两个字符串相等的标准是:只要两个字符串所包含的字符序列相同,通过equals()比较将返回true

23、java 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。同步有两种实现方法,一个是在被调用的方法前加上Synchronized关键字,一个是wait()和notify()。

26、hashMap和hashTable的区别

答:1.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。2.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 值:只有HashMap可以让你将空值作为一个表的条目的key或value。

27、Error Exception RuntimeException区别

答:Error表示非常严重的、不可预期的异常情况,通常应用程序无需捕获并处理。Exception通常是一种设计或实现的异常,它是编译器可以“感知”的异常,所以程序被要求必须捕获并处理这些异常。RuntimeException与Error一样,也是无需捕获的,且就算在方法上throws了RuntimeException,调用该方法的语句也无需catch这些异常。Error和Exception都继承自Throwable类。所有的Checked Exception 均从java.lang.Exception 继承而来,而Runtime Exception 则继承java.lang.RuntimeException 或java.lang.Error (实际上java.lang.RuntimeException 的上一层也是java.lang.Exception)。

28、Thread.sleep()和Object.wait()两者的共同点和不同点

答:其实两者都可以让线程暂停一段时间,但是本质的区别是一个线程的运行状态控制,一个是线程之间的通讯的问题. 共同点:
他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。
不同点:
Thread.sleep(long)可以不在synchronized的块下调用,而且使用Thread.sleep()不会丢失当前线程对任何对象的同步锁(monitor);
object.wait(long)必须在synchronized的块下来使用,调用了之后失去对object的monitor, 这样做的好处是它不影响其它的线程对object进行操作。

29、启动一个线程是用run()还是start()?

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。RUN是Runnable的一个方法.它要靠start()启动。start()是启动线程地方法,却不直接运行run方法来启动。

30、List, Set, Map是否继承自Collection接口?

List,Set是,Map不是

31、说出数据连接池的工作机制是什么?

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

32、请说出你所知道的线程同步的方法。

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争

33、你所知道的集合类都有哪些?主要方法?

最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。

34、描述一下JVM加载class文件的原理机制?
JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。


1)根据简历,哪个项目印象最深刻?

无分值,但是根据简历,确定后续的问题主要覆盖面。
2)这个项目架构设计是怎么样的?有哪些系统,哪些部署环境,整个的功能和数据流向是怎么样的?

能够完整地说出系统的功能,部署的环境,数据的流向。评定相应的分值:1-5
3)这个项目用了哪些技术?为什么要用这些技术?

清晰地说出所使用的技术、框架,知道这些技术的使用目的。评定相应的分值:1-5
4)实施时发现这些技术有哪些优缺点?优点是怎样发挥利用的,缺点是如何克服的?

很明确这些技术本身的优缺点,清楚描述优点的发挥场景,以及对缺点的克服、绕过方案。评定相应的分值:1-5
5) 最后项目完成后,觉得当初的设计有哪些问题,应该做哪些改进?

有没有反思架构的设计,有没有想过某些技术的合理性并考虑重新选择,并分析改进和替换的原因。


描述一个系统,功能,设计,实现 描述
团队结构,工作职责 描述
为什么采用一个技术,为什么不使用一个技术 描述
应用中有使用到集群么?多大规模? cluster
"cluster中应用中碰到的问题,session共享问题?" cluster
如何实现集群?session复制?无状态?集中session? cluster
Collections和Collection的区别? collection
HashMap和HashTable的区别 collection
Java中有那些集合的接口 collection
Map与Collection的关系? collection
ClassLoader是如何查找类的? core
equals与==的区别 core
"Exception,checked,unchecked" core
exception机制,层次 core
final关键词的使用 core
hashCode()方法的作用 core
InputStream与Reader的区别 core
interface与abstract类的区别 core
Java非阻塞I/O? core
Java的基本对象Object有哪些方法? core
"Java中反射的性能如何,你是怎么看待的" core
Object的hashCode()的计算,肯定唯一的吗? core
典型的web应用的classloader结构 core
"对象要实现排序,需要实现什么接口" core
请问你在什么情况下会在你的JAVA代码中使用可序列化? core
如何保证一个类的非静态方法在多个实例中是同步的? core
如何将一个String转化为int core
如何序列化一个类的实例 core
怎么样克隆一个类 core
怎样标识JavaBean对象里面的一个属性不需要被序列化? core
Java中内存调优的参数 gc
垃圾收集是什么,为什么需要,怎么工作 gc
ajax http
cookie&session http
cookie的原理 http
http中的forward和redirect的区别 http
ear应用中classloader的结构 jee
EJB有哪几种事务属性(TransactionPropagationAttributes)?请阐述它们之间的区别。 jee
JMS的有哪几种消息模型? jee
statefulsessionbean的生命周期 jee
请详细描述StatefulSessionBean的生命周期。 jee
"在一个EJB容器中,容器如何知道事务已经完成并且可以提交了?用户如何控制事务回滚?" jee
AOP的含义与用途 opensource
Ioc的含义与用途 opensource
Spring用过那些功能 opensource
Structs中处理请求的流程 opensource
解释springaop,transaction,FactoryBean&BeanFactory opensource
你知道IoC(InversionofControl)吗?IoC有哪几种类型?使用IoC有哪些好处?现在有哪些比较流行的IoC容器? opensource
平时会关注开源软件的发展么? opensource
HttpServlet类中有那些方法 servlet
jsp执行过程,大量使用jsp有什么问题?PermGen大小 servlet
servlet的生命周期 servlet
session的生命周期 servlet
如何在HttpSession过期的时候,清理你在HttpSession中保存的对象的资源占用? servlet
notify()对应的方法是什么 thread
daemon线程的含义 thread
Thread的sleep方法和Object的wait方法有什么区别? thread
解释synchronized thread
解释ThreadLocal thread
如何停止一个正在运行的线程? thread
什么叫线程安全?servlet线程安全吗? thread
什么是Daemon线程?它有什么意义? thread
怎么样写一个线程?用线程时的注意点? thread
JDK如何做到XMLParser的实现和接口无关?JDK是如何找到XMLParser的实现的?如何覆盖jdk1.4中的XMLParser实现? xml
xml解析模型描述 xml
性能测试,容量测试,有没有?如何做? 测试
有没有针对伸缩性的设计 架构
有没有针对性能的设计 架构
解释scalability与extensibility 架构
常见的排序算法有哪些?各有什么优缺点? 理论
设计模式列举,解释使用场景 理论
PreparedStatement与Statement 数据库
数据库事务有哪几个隔离级别?请分别阐述 数据库
数据库相关的性能优化?sql,数据库本身,缓存? 数据库
项目中碰到的问题,如何解决? 问题解决
java应用性能优化,从哪些方面入手 性能优化


项目考察:

问题:主要项目经历及项目中承担的角色?

问题:在你参与的项目中你觉得比较有挑战性或者是亮点的项目有哪些,亮点分别在哪里?

问题:如果让你重做这个项目,你觉得在哪些地方可以改进?你知道类似的网站的架构设计么?比如***

问题: 你读过哪些开源框架的源码?哪些点给你留下深刻印象?

问题:你最近在研究的技术或者阅读的书籍?举例其中印象比较深刻的。或者下班后的时间有学习技术么?

问题:是否参加过开源项目?

基础技术考察:

问题: 什么是xss?SQL注入攻击?在现有的web开发模式中,如何有效防范?

问题: RPC协议有哪些实现方案?谈谈其中一种的大致结构?

问题:简述Java集合类的大体结构,谈谈HashMap内部实现机理,put和get方法的实现逻辑

问题: 简述bio和nio的差别,并简述接收网络流的代码结构

问题: 简述阻塞队列(BlockingQueue)的put方法的实现逻辑

问题: session和cookie的区别?如何在分布式环境中使用session?

问题: HTTP的协议体里包含哪些内容?你所知道的HTTP状态码有哪些?

问题:如何定位一个资源文件?有哪些方式

问题:操作系统解决互斥的方案?口述其中一种的伪代码

问题:有没有将算法的原理用于实际工作中?

问题:谈谈TCP/IP分层和封装的机制?

问题:谈谈TCP/IP建立连接和关闭连接的过程?状态流转?

问题:应用中遇到的编码问题?

问题:动态内容静态化的手段?

问题:如何评估工作量?

问题: 设计系统间交互的接口有哪些原则?你有哪些好的经验可以分享?

问题: 多子系统相整合的系统中,如何保证高可用性和事务性?

问题: 如何解决单元测试中环境依赖(数据、第三方系统)的问题?

问题: 详述一下数据库事务隔离的四个级别,mysql和oracle分别默认支持哪个级别?

问题: 通过哪些方式能锁住某些行记录?

问题: 数据拆分的策略有哪些?每种策略的代价是什么?

问题: 分布式数据库与应用端的整合策略有哪些?

问题: 什么是单点登录?一个典型的单点登录的流程?

问题: 什么责任连模式?有哪些典型的应用?

问题: 在性能测试过程中需要收集哪些信息?分别通过什么工具和方法收集?

问题: 什么是一致性hash算法?适用场景有哪些?

问题: 什么是闭包?它有哪些优点?Java中如何实现闭包?

问题: apache perfork和worker模式有哪些区别?比较其优缺点

java基础:
1、面向对象的三个基本特征
2、方法重载和方法重写的概念和区别
3、接口和内部类、抽象类的特性
4、文件读写的基本类
5、串行化的注意事项以及如何实现串行化
6、线程的基本概念、线程的基本状态以及状态之间的关系
7、线程的同步、如何实现线程的同步
8、几种常用的数据结构及内部实现原理。
9、Socket通信(TCP、UDP区别及Java实现方式)
10、Java的事件委托机制和垃圾回收机制
11、JDBC调用数据库的基本步骤
12、解析XML文件的几种方式和区别
13、Java四种基本权限的定义
14、Java的国际化
15、Java中有那些集合的接口
16、Collections和Collection的区别?
17、equals与==的区别

网络多线程编程:

问题:并发同步的问题,synchorized是如何使用,Object的wait、notify方法什么作用?并发同步问题sycronized、wait的使用/并发问题数据,如何保证数据同步?

问题:如何创建一个线程?

创建线程有两种方式,如下:1、 扩展java.lang.Thread类 2、 实现Runnable接口
Thread类代表线程类,它的两个最主要的方法是:run()--包含线程运行时所执行的代码;Start()--用于启动线程

问题:sleep() 和 wait() 有什么区别?

框架掌握能力:

问题:(Hibernate)Hibernate是如何延迟加载?

问题:(Hibernate)Hibernate中怎样实现类之间的关系?

问题:(Hibernate)说下Hibernate的缓存机制?

问题:(Hibernate)Hibernate有哪几种查询方式?

问题:(Structs)中处理请求的流程

问题:(Struts)Struts工作机制/工作流程?

问题:(Struts)struts1.x和2.x有什么不同?

问题:(Struts)Struts的validate框架是如何验证的?

问题:(Struts)Struts中ActionServlet承担一个什么样的角色

问题:(Struts)Struts提供了几个标签库?都是什么标签库?

问题:(Spring)介绍下依赖注入和控制反转的概念

问题:(Spring)spring mvc的工作原理?

问题:(Spring)spring mvc中DispatcherServlet的主要作用?

问题:(Spring)如何在web应用中配置spring

问题:(Spring)spring中的BeanFactory与ApplicationContext的作用有哪些

问题:(Spring)在web应用里面配置spring

问题:(Spring)介绍一下Spring框架中Bean的生命周期

深入技术考察:

问题:并发同步问题sycronized、wait的使用/并发问题数据,如何保证数据同步

问题:jvm调优

问题:如果要构建高性能Web站点,谈谈你的想法和思路

问题:GC算法、各种垃圾收集器、运行期优化、产品中遇到的与jvm相关的问题如oom、ClassLoader问题等,并针对HotSpot VM的实现讲解了堆、非堆内存划分

其他技能掌握能力:

问题:flex3&action3

问题:linux常用基础命令&软件的安装&问题排查(top、netstat、dh、ps等)
1、shell读文件并把文件的内容输出到控制台

问题:jquery&extjs3

问题:请使用jquery实现页面的li元素基于奇数偶数的颜色换行 ?

问题:jquery有哪些常用的组件库

问题:mysql&oracle

问题:

分析能力考察:

问题: 设计一个数据库连接池,支持自动检测和重连

问题: 页面打开很慢,请简述你将采取的分析过程和具体方法?

问题: 系统里需要对一个树形结构的数据集进行高速存取,如何设计数据库表结构?

问题: 在一个海量数据环境中,数据库和memcached并存,现需要大批量做数据订正,该如何做?

问题:推出的论坛系统由于业务增长用户量爆增,系统需要在架构上进行升级提高可用性,谈谈可以采取的措施

问题:需要做一个团购门户,谈谈采集各大团购网站数据的方案

问题:有些性能较差的Sql会给 DB较大压力,比如一些复杂的前台排行数据,哪些措施可以降低这种压力?

问题:你如何看待服务化? 什么样的业务需要做服务化?如果有个专业的博客网站让你做服务化,你会从哪几个方面做抽象?

问题:开发和测试过程中因为依赖第三方的环境不稳定导致某些开发和测试工作无法进行,请设计一个方案解决这个问题

问题:对于大型网站而言,经常要面对不可预知的热点事件带来的高流量,如何能够做到避免这样突发的高流量造成网站的不可用呢?

问题:统计10万个单词中出现频率最高的1000个
10万个单词完全可以内存中放下,所以可以使用hashmap,单词作为key,value为该单词的计数,对这10万个单词进行统计。统计完后,用一个最小堆找出计数最多的那1000个单词。具体可参考码农的Top K算法详细解析。

问题:求1000亿个数中的最大1000个

假设内存为4G,显然不足以把这1000亿个数都存入。

可以把这它们划分为落干个区间,对应地存储到若干个文件中,使得每个区间中不超过10亿个数,若超过则对该区间再进行划分。

然后对这些区间内的数进行统计,假设前N个区间中数的总数X1,且X1<1000,而前N+1个区间中数的总数为X2,且X2>1000,则最大1000个数为前N个区间内的数加上第N+1个区间中的前1000-X1个数。

今天想到的面试题:

1、序列化问题

2、xmemcached问题

3、uml图的理解

4、乐观锁和悲观锁的理解及如何实现,有哪些实现方式?

5、outofmemory现象的解释?出现这个现象一般有哪些原因?有哪些方法定位问题出现点?

6、并发+多线程+共享资源锁

7、jvm的垃圾回收机制+新生代、老年代、永久带

8、经验之谈:jvm堆的大小设置为多少比较合适
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值