阿里巴巴java电话面试整理

activemq

贡献于2017-03-22

字数:10213 关键词: 面试题目 试题 HTTP HTML C/C++

Java学习群:72030155 阿里巴巴笔试题整理 · l StringBuffer的实现方式,容量如何扩充 · l 了解JVM启动参数吗?-verbose -Xms -Xmx的意思是什么? · l 垃圾收集,火车算法 · l Java中的内存溢出和C++中的内存溢出,是一个概念吗? · l ClassLoader的功能和工作模式 要点: 1、JVM在运行时会产生三个ClassLoader:Bootstrap ClassLoader、Extension ClassLoader和AppClassLoader,他们之间存在父子关系。 1、了解classloader采用双亲委托模型的方式加载class,从而更好的保证Java平台的安全。在此模型下,当一个装载器被请求装载某个类时,它首先委托自己的parent去装载,若parent能装载,则返回这个类所对应的Class对象,若parent不能装载,则由parent的请求者去装载。   · l jvm gc 如何判断对象是否需要回收,有哪几种方式? 引用计数,对象引用遍历;jvm有哪几种垃圾回收机制?讲讲分代回收机制 考察对垃圾回收机制的了解程度。 · l java类静态属性:static xxx= new yyy(),jvm什么时候生成yyy这个类的对象?    考察静态属性的加载时间,加载顺序(可以扩展到静态成员和类加载机制)。 答案:类加载的时候。   · l 反射,是否可以调用私有方法,在框架中的运用 · l 面向对象的特征有哪些方面 抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 · l Error、Exception和RuntimeException的区别,作用又是什么? 基本问题。 error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况 · l reader和inputstream区别 Java学习群:72030155 Reader用于读入16位字符,也就是 Unicode 编码的字符;而 InputStream 用于读入 ASCII 字符和二进制数据。 · l ==和equals的区别 ==比的是java的基本类型,是考虑值是否相等;比对象的变量类型,引用是否是指向同一个引用;equals比的是内容是否相等。   · l String s = "aa"+"bb"; 编译器会做什么优化 如果答对了,String s = "aabb"; 会继续问 String s = "aa"+ bb; //bb也是个字符串 ,编译器会做什么优化处理 jdk1.4和jdk1.5分别是  New StringBuffer().append("aa").append(bb).toString(); //1.4  New StringBuilder().append("aa").append(bb).toString(); //1.5   · l Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。   Java数据类型: 基本数据类型(内置类型);扩展数据类型 java基本类型八种: boolean、char(16bit)、byte(8bit有符号)、short(16bit有符号)、int(32bit有符号)、long(64bit有符号)、float(32bit)、double(64bit). Java里面整数长度固定,且没有提供无符号整型。 内置类型也称作基本类型(Primitive Types),是其他类型的基础。所有的其他类型(包括Java核心库和用户自定义类型)都是通过基本类型扩展而来的。这些类型是我们描述对象最基本的方式。比如:判断是否使用boolean;衡量大小、长度使用各种整型(包括short, int, long)和浮点数(float和double);表达字符使用char;而处理二进制数据块使用byte。   · l Object类中有哪些方法 · l hashCode的作用 hashcode 有哪些算法 · l 如果在hashCode中返回常量1,会有什么结果? 在HashMap中,所有这个类的对象都会互相出现hash冲突,从而使HashMap的查找性能降级为线性查找 · l char型变量中能不能存贮一个中文汉字?为什么? 能,因为Java在内部使用UTF8 · l 字节流/字符流 · l IO和NIO本质不同在实际项目使用场景及如何使用 主要考察NIO使用场景   · l 用过哪些集合类?能分别说下他们的应用场景吗? 主要考察集合这块系统学习能力及实际应用习惯 · l 列举几个Java Collection类库中的常用类,试简述其类结构 常用集合类,对应算法, ArrayList LinkedList HashMap Hashtable · l HashMap和Hashtable的区别。 · l List、Set、Map是否都继承自Collection接口?HashMap中是否任何对象都可以做为key,用户自定义对象做为key有没有什么要求?  List,Set继承自Collection接口;Map接口是一组成对的键-值对象,Map中不能有重复的key。拥有自己的内部排列机制;  用户自定义的类实例对象做为key,主要考察应试者对hashCode()/equals()的了解情况; ArrayList中的对象排序主要考察应试者对Collections集合辅助类的应用熟练情况,如果不清楚Collections中sort的使用,回答通过遍历可实现,可以顺着问些排序的算法。 Java学习群:72030155   · l 一个Java对象作为Map的Key时需要满足的前提条件是什么? 需要重载equals及hashCode方法,考查基本的Java中的约定是否掌握。 · l 什么是java序列化,如何实现java序列化? 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。   · l 集合类型。常问如果集合中key值是自己定义的类,hashmap该怎么处理,list能怎样方便的排序 · l interface 和 abstrat class的区别 · l list map set 的区别 · l 多线程 同步的原理 · l 如何停止一个线程?Thread.setDeamon()的含义 · l 多线程有几种实现 同步和并发是如何解决的 什么叫守护线程,用什么方法实现守护线程 · l 启动一个线程是用run()还是start()? · l 解释是一下什么是线程安全?举例说明一个线程不安全的例子。解释Synchronized关键字的作用。 基本的线程安全问题,需要有线程安全的编程意识。   · l 说出数据连接池的工作机制是什么?解决什么问题 · l 何时用覆盖,何时用重载?构造器Constructor是否可被覆盖/重载? 覆盖是用来实现多态;重载是用来使API更简洁易懂。Constructor不可以被覆盖,可以被重载。     · l 假设A为一个基类,A1和A2都继承A。能不能写A x = new A1()?能不能写A1 x1 = x?能不能写A2 x2 = x? A x = new A1()可以;A1 x1 = x需要加强制转换才能编译通过;A2 x2 = x需要加强制转换才能编译通过,但是运行期会抛出ClassCastException     · l 如果A和B对象循环引用,是否可以被GC? 可以。 · l 了解过哪些JDK5的新特性,举例描述下相应的特性?   · l xml有哪些解析技术?区别是什么? 答:有DOM,SAX,STAX等 DOM: 处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存, 适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 Java学习群:72030155 STAX:Streaming API for XML (StAX) · l 知道范型的实现机制吗? · l Socket编程通常出现的异常有哪些,什么情况下会出现 · l 运行时异常与一般异常有何异同? · l java异常大致分类并举出相应异常类及在实际项目各层是如何处理异常的? 考察异常设计及注意能力     · l 解释Java中内存泄漏,并举例说明   考查Java的垃圾回收原理,区别于C++的内存泄漏,Java中主要是引用未被释放造成。   窗体底端 Comments   Most Recent: 2009-3-31 下午5:23 作者: 冯春培, 发表于: 2009-3-31 下午5:23   l 排序算法有哪些,优缺点 l 简介常用集合类,以及对应算法, ArrayList LinkedList HashMap Hashtable ArrayList 数组 LinkedList 链表 HashMap Hashtable 散列表 l 散列表的知识,碰撞如何解决? 链接法,开放寻址法 链接法,开放寻址法 散列函数,什么是好的散列函数? 减少碰撞 查找的平均时间复杂度 O(1) l 散列函数,什么是好的散列函数 l 查找的平均时间复杂度 l 二叉查找树,查找的平均时间复杂度 和O(h) l 红黑树的特点 l 动态规划和贪心算法的区别 l 字符串匹配算法,描述Kmp l 最长公共字串,LCS l 有限状态机,FSM Java学习群:72030155 l 递归算法的前提条件,如何优化 出现重复性子问题。 一种优化方法是保持中间结果,避免重复计算 l Collections.sort如何使用,使用哪种排序算法? 优化的快速 优化的快速 框架 & Web/Application server l Jboss端口在哪个配置文件中修改 Web端口在server\default\deploy\jbossweb-tomcat55.sar的server.Xml中 l Hibernate/Ibatis,两者的区别,简单的实现 l ibatis和hibernate框架,在性能调优方面都各有什么方式? 主要考察框架更深层次的使用 l Hibernate: session.lock()的含义,session.merge()的含义,session.saveOrUpdate()的含义,session.flush()的含义 主要考察对hibernate二级缓存和脏数据检查的了解 l hibernate一级和二级缓存,使用hibernate实现集群部署,需要注意些什么 考察缓存的理解和运用,hibernate如何使用缓存,一级和二级缓存的作用域(Session的缓存和SessionFactory的缓存),使用缓存在分布式上有没有考虑到数据及时性和一致性的问题。 l ibatis:sql语句中用>特殊符号,怎么办 l Structs,常问structs底层有几个servlet l struts框架,url通常是.do结尾,如何修改为.xy?利用j2ee那块技术及原理是什么? 主要考察基本配置掌握和配置基于的原理 l Mvc的概念 l 谈一下自己最熟悉的web框架? 要点: 1、对框架的整体把握。 2、对框架底层实现机制是否了解。 l Spring的核心理念是什么? l spring 提供了哪两种事物处理方式,采用了java的什么技术 spring提供了编程式事务处理和声明式事务处理。 spring中的事务处理实际上就是基于动态的aop(面向方面编程)机制实现的。spring在默认情况下会使用java的动态代理机制,因为java的动态代理机制要求其代理的对象必须实现一个接口。并且在该接口中定义准备进行代理的方法。而对于没有实现任何接口的java bean,spring是通过cglib来实现的。 中心接口 :rg.springframework.transaction.platformtransactionmanager. 编程式事务处理:transactiontemplate能够以编程的方式实现事务处理。 声明式事务处理: l Spring对多种ORM框架提供了很好的支持,结合事务管理描述在Spring中使用Hibernate或Ibatis的方法。 l Spring bean生命周期 当组合不同的生命周期机制时 - 例如,类层次中使用了不同的生命周期机制 - 开发者必须注意这些机制的应用顺序,下面是初始化方法中的顺序: Java学习群:72030155 @PostConstruct元注释 InitializingBean的afterPropertiesSet()定义 自定义init()方法配置 析构方法调用顺序是相同的: @PreDestroy元注释 DisposableBean的destroy()定义 自定义destroy()方法 一般人会答scope=单例,多态,session,request 等 这里会再问Spring的单例和设计模式的单例的区别,设计模式的单例怎么实现,注意什么(多线程) l Spring 属性注入的实现 一般人会回答通过反射,get/set 我问题的本意是问以下这个类图的 l spring AOP解决了什么问题,spring如何实现AOP? 主要了解应聘人员对spring原理的理解,对AOP的理解,考察反射和cglib的了解。 l Spring BeanFactory,FactoryBean的区别 l Spring的事务管理 ,Spring bean注入的几种方式 DI的几种方式:接口注入、Setter方法注入、构造方法注入,可展开问下各种DI的适用场景; 第二点主要考察应试者对spring AOP是否真正研究并使用过,由于具体的声明式事务配置细节可能记不下来,只要能描述出主要的配置情况和命名匹配规则,事务属性的了解即可,也可以根据情况顺便问些动态代理相关的问题; l j2ee采用什么技术实现分布式事务,如何实现,讲讲原理,为什么需要两阶段提交,能解决哪些问题,哪些问题不能解决。 l JMS的模式两种模式 l apache,tomcat和weblogic的最根本区别 l Jboss端口在哪个配置文件中修改 数据库 l oracle三层分页实现 l sql注入原理 l 乐观锁,悲观锁 l 数据库操作的性能瓶颈通常在哪里, 1000万级别访问,在数据库和java程序上考虑哪些来进行性能优化 l Jdbc中, batchSize, fetchSize的使用 batchSize 更新的数量 Java学习群:72030155 fetchSize 一次从数据库取的数量 l JDBC中,statement,prepared statement ,Callable statement的区别是什么? Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法; PreparedStatement:对于同一条语句的多次执行,Statement每次都要把SQL语句发送给数据库,这样做效率明显不高,而如果数据库支持预编译,PreparedStatement可以先把要执行的语句一次发给它,然后每次执行而不必发送相同的语句,效率当然提高,当然如果数据库不支持预编译, PreparedStatement会象Statement一样工作,只是效率不高而不需要用户工手干预.另外PreparedStatement还支持接收参数.在预编译后只要传输不同的参数就可以执行,大大提高了性能. 防止Sql注入 l 数据库数据文件和索引为什么需要收缩,如何实现收缩 l 性能方面。多数结合多线程、同步来问,以提取一张大表数据来作为例子 解决性能的方法 l 用JDBC定义一个带事务性的数据库操作主要步骤是什么?数据库的事务特性ACID是怎么理解的?项目中数据库设计时范式是怎么考虑的, 主要步骤: 通过驱动器管理器获取连接接口。 获得Statement或它的子类。 设置Statement中的参数。 执行Statement。 关闭Statement。 关闭连接接口 可以再问一些批处理的问题,Statement/PrepareStatement的区别等等. ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability); 范式和表关联主要是了解下应试者是否在项目中做过设计;有很多应试者确实对表关联不清楚 l 表关联时,内连接,左连接,右连接怎么理解? Web 开发 l Js中的原型 l AJAX感受,有什么缺点?你使用的是Ajax的那种框架?Ajax如何解决跨域问题 l 谈一下servlet的生命周期,是否有线程安全问题,如何解决? 答案: 过程: 1、Servlet容器负责加载和实例化Servlet,servlet服务器启动时或者第一次接收servlet请求时。 2、在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。 3、Servlet容器调用Servlet的service()方法对请求进行处理。 4、当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。 要点: 1、过程描述清楚。 2、清楚servlet在容器中是单实例的即servlet是线程不安全的,不允许在servlet中定义全局的类对象。 l JAVA SERVLET API中forward() 与redirect()的区别? 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法 Java学习群:72030155 l 解释XSS、XSRF,及举例说明。 考查是否对客户端Web技术有了解,重要的是是否有安全意识。 l HTTP请求中Session实现原理?如果客户端禁止Cookie能实现Session吗? 考查会话Cookie及Session实现的基本原理,对HTTP协议了解理程度。 l http get和post区别 考查是否对基本HTTP协议有所了解。 GET和POST提交数据方式不一样: GET请求提交数据有限,通过在URL中添加参数方式传送数据。 POST请求除了有GET请求一样的能力外,POST请求还可能通过发送请求是附加数据的方式传送文本或二进制数据 l 在web开发中,用redirect与forward做跳转有什么区别?web应用服务器对用户请求通常返回一些状态码,请描述下分别以4和5开头的状态码 forward,redirect是web页面的两种不同的路由关系,貌似相同,但还是有许多差别的, 一、forward由javax.servlet.RequestDispatcher来封装,由包容器container提供RequestDispatcher接口的实现 二、Redirect由HttpServletResponse.sendRedirect(String location)来支持 差别: 两种都可以对用户的request进行转发,但是还是有许多的不同,差别最主要集中在如下几个方面: 1、forward共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范围的话,则被forward到的资源也可以访问这个javabean,而redriect则不行。 2、forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如: req.sendRedriect("http://www.mocuai.com"); Ø 客户端错误4×× 表示请求可能出错,妨碍了服务器的处理。如: 400 服务器不理解请求的语法。 403 服务器拒绝请求。 404 服务器找不到请求的网页。服务器上不存在的网页经常会返回此代码。 410 请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码相似,但在资源以前存在而现在不存在的情况下,有时用来替代404 代码。如果资源已永久删除,应当使用 301 指定资源的新位置。 服务器错误5×× 表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。如: 500 服务器遇到错误,无法完成请求。 503 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。 l session和cookie的区别 Java学习群:72030155 l 在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符( & “”) 用 &; 取代 & 用 ';取代 ‘’ 用 <; 取代 < 用 >; 取代 > 用 ";取代 “” l servlet中,如何定制session的过期时间? l servlet中,filter的应用场景有哪些? l 描述JSP和Servlet的区别、共同点。 l 说出Servlet的生命周期 查考对Servlet的掌握程序。 l JSP编译和执行原理? JSP文件的Scriptlets在编译后将被包含于该JSP servlet的service()方法。当JSP引擎处理客户端请求时,JSP Scriptlets在被请求的时候被执行。如果scriptlet产生输出,输出将在out (JSPWriter)对象中进行缓存然后最终发送到客户端。 l Jsp,常问tag的使用,layout怎么实现 l JSP的include有几种实现,并说明 l Servelt的概念。常问httprequest能获得的参数 l 怎么获取到客户端的真实IP? l 分别采用cookie和session如何实现web集群,他们分别适用哪些应用场景。(难度较高) 考察是否有分布式开发和web集群经验。Cookie考虑浏览器的限制和大小;session考虑复制、粘性非粘性session等。 l jsp四种会话跟踪技术,会话作用域,page,request,application,session l 说出在JSP页面里是怎么分页的?页面需要哪些参数?oracle分页的关键字是什么 l 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? l 名词解释:jndi,rmi,jms,事务 l tcp,udp区别 设计模式 l Singleton的几种实现方式 l 工厂模式和抽象工厂模式之间的区别 项目经验,软件工程及其他 l 在项目中是否采用分层的结构,是怎样划分的,各层之间采用了哪些相关技术? 对哪些设计模式比较熟悉? 参考答案: 了解应试者对基于WEB开发体系结构的应用是否熟悉,对其会答的技术可以根据情况顺着问下,比如相关技术的基本原理机制,技术之间的不同或差异; 对回答的设计模式可以选择一到两个稍深入问下 Java学习群:72030155 l 什么是低耦合和高聚合?封装原则又是什么意思? l 怎样按照等级制度给动物王国(包括各种物种和各自的行为)建模? l 描述一下实现一段代码的过程,从需求到最终交付。 l 团队开发:版本控制,做为管理变更的工具,一般需要有移动、复制、删除、修改功能,那么cvs支持哪些功能呢 l 开发环境怎么样 你是怎么开发一个项目的(项目流程 和 开发流程) 如何保证代码质量的 l 存放入ArrayList中的对象,如果有一个Integer类型的属性字段,现在要对ArrayList中的对象按升序或降序排序,有哪些方法? l 业务时间关注什么技术,新方法等 l 描述你碰到的过的最难的技术问题。后来是怎么解决的? l 在开发中如何把握代码质量。 要点: 1、可读性:命名、风格、注释。 2、可维护性:单一职责、面向接口编程、消除重复代码、常量定义。 3、性能考量:拼装字符串、预编译正则表达式、线程同步、数据库更新的批处理、SQL优化。 l Linux 一些基本命令,如看load,查看文件内容

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ]
1 人已下载

下载文档

相关文档