m.racktom.com
共享资料网
Java笔试题2016最新版
目录
一. Java 基础部分..........................................................................................................................9 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ........... 9 2、说说&和&&的区别。...........................................................................................................9 3、在 JAVA 中如何跳出当前的多重嵌套循环?................................................................... 9 4、switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上? .. 10 6、用最有效率的方法算出 2 乘以 8 等於几? .....................................................................10 7、请设计一个一百亿的计算器...........................................................................................10 8、使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? ... 10 9、"=="和 equals 方法究竟有什么区别? .........................................................................10 10、静态变量和实例变量的区别?.....................................................................................11 11、是否可以从一个 static 方法内部发出对非static 方法的调用? ......................... 11 12、Integer 与 int 的区别 ..................................................................................................11 13、Math.round(11.5)等于多少?Math.round(-11.5)等于多少?................................. 11 14、请说出作用域 public,private,protected,以及不写时的区别 ........................ 11 15、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?12 17、写 clone()方法时,通常都有一行代码(不是必须有),是什么?.......................... 12 18、面向对象的特征有哪些方面.........................................................................................12 19、java 中实现多态的机制是什么? ................................................................................12 20、abstract class 和interface 有什么区别?.............................................................. 12 21、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 synchronized?.......................................................................................................................13 22、什么是内部类?Static Nested Class 和 Inner Class 的不同。 ..........................13 23、内部类可以引用它的包含类的成员吗?有没有什么限制?..................................... 13 24、String 是最基本的数据类型吗?..................................................................................13 27、String 和 StringBuffer 的区别..................................................................................14 28、如何把一段逗号分割的字符串转换成一个数组?....................................................... 14 30、final, finally, finalize 的区别。........................................................................ 14 31、运行时异常(Runtime)与检查异常(Checked)有何异同? ......................................... 15 32、error 和 exception 有什么区别?................................................................................15 33、Java 中的异常处理机制的简单原理和应用。............................................................ 15 34、请写出你最常见到的 5 个 RuntimeException。 ........................................................ 15 35、Java 语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代 表什么意义?在 try 块中可以抛出异常吗?..................................................................... 16 36,Java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和 suspend()方法为何不推荐使用?.......................................................................................16 38、同步和异步有何异同,在什么情况下分别使用他们?举例说明。......................... 17 39. 下面两个方法同步吗?(自己发明)......................................................................... 17 40、多线程有几种实现方法?同步有几种实现方法?......................................................... 18
1
41、启动一个线程是用 run()还是 start()?..................................................................... 18 42、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对 象的其它方法?.......................................................................................................................18 43、线程的基本概念、线程的基本状态以及状态之间的关系......................................... 18 45、介绍Collection 框架的结构.......................................................................................18 46、ArrayList 和 Vector 的区别........................................................................................19 47、HashMap 和 Hashtable 的区别 ......................................................................................19 48、List 和 Map 区别?.........................................................................................................19 49、List, Set, Map 是否继承自Collection 接口?........................................................ 19 50、List、Map、Set 三个接口,存取元素时,各有什么特点? .................................... 19 51、说出 ArrayList,Vector, LinkedList 的存储性能和特性....................................... 19 51、去掉一个Vector 集合中重复的元素........................................................................... 1953、Collection 和 Collections 的区别。....................................................................... 20 54、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是 equals()?它们有何区别?.....................................................................................................20 55、你所知道的集合类都有哪些?主要方法?................................................................. 20 56、两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对?.......................................................................................................................................20 68、说出一些常用的类,包,接口,请各举 5 个............................................................. 20 59、 Java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出 他们分别是哪些类?.............................................................................................................21 60、字节流与字符流的区别.................................................................................................21 61、什么是 java 序列化,如何实现 java 序列化?或者请解释 Serializable 接口的作 用。.........................................................................................................................................21 62、描述一下 JVM 加载 class 文件的原理机制? ............................................................... 2163、heap 和 stack 有什么区别。 ........................................................................................21 64、 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动 通知虚拟机进行垃圾回收?.................................................................................................21 65、什么时候用 assert。....................................................................................................22 66、能不能自己写个类,也叫 java.lang.String? ........................................................ 22 67、SSH 集成方式..................................................................................................................22 二.算法与编程...............................................................................................................................23 1、编写一个程序,将 a.txt 文件中的单词与b.txt 文件中的单词交替合并到 c.txt 文 件中,a.txt文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。 ... 23 2、编写一个程序,将 d:\java 目录下的所有.java 文件复制到 d:\jad 目录下,并将原 来文件的扩展名从.java 改为.jad。..................................................................................24 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字 符串,但要保证汉字不被截取半个,如“我 ABC”,4,应该截取“我 AB”,输入“我 ABC 汉 DEF”,6,应该输出“我 ABC”,而不是“我 ABC+汉的半个”。..................... 25 4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字 符的个数。.............................................................................................................................25 5、说明生活中遇到的二叉树,用 java 实现二叉树......................................................... 26 8、递归算法题1....................................................................................................................27 9、递归算法题 2....................................................................................................................28
2
10、排序都有哪几种方法?请列举。用 JAVA 实现一个快速排序。 ............................... 28 11、有数组a[n],用 java 代码将数组元素顺序颠倒...................................................... 30 12 不使用递归遍历二叉树...................................................................................................30 三.前端页面部分...........................................................................................................................32 3.当 service 有一个实例变量,doGet 和 doPost 去调用这个变量,会出现什么问 题,你是如何解决的。.................................................................................................32 4.有三台服务器,如果在一台服务器上登陆了这个用户,其他两台就不能再登陆 这个用户,使用 session共享,你是怎么做的。 .....................................................32 5.写一个自定义标签要继承什么类.............................................................................32 6.Jsp 如何处理 json.....................................................................................................32 7.Jsp 的重定向和转发的流程有什么区别.................................................................. 32 8.Jsp 和 servlet 的区别..............................................................................................32 9.jsp 可以操作窗口吗?..............................................................................................32 10.session 的主要几个方法的区别............................................................................ 3311.jsp 的三大指令,七大动作的具体功能................................................................ 33 12.获取页面的元素和值有几种方式,分别说一下 ................................................... 33 13.servlet 和 javaScript 的区别,他们分别是什么作用...................................... 33 14.jsp 的执行原理........................................................................................................34 16.HTML 和 Servlet 的异同..........................................................................................34 17.会话跟踪有哪些,他们的区别是什么................................................................... 3418.session 和 application 的作用............................................................................ 3419.request ,response,session 和 application 是怎么用的.......................... 34 20.有几种方式将页面的值传到后台........................................................................... 3421.一个 form 表单的值如何获取.................................................................................34 22.传递参数到后台有几种方式...................................................................................35 23.Jsp 中父页面中怎么拿到子页面的表单元素,不是拿值怎么拿........................ 35 24.定义一个 String 类型的字符串,如果重定向之后还能不能获得这个数据 ..... 35 25.404 和 500 是什么意思............................................................................................35 26.写出 5 种 JSTL 常用标签 .........................................................................................35 28.Jsp 页面把一个元素隐藏的方法............................................................................ 3529.Session,application,cookie 的区别 .............................................................. 3530.我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 ISO-8859-1,如 何输出一个某种编码的字符串.....................................................................................35 32.怎么判断用户请求时是第一次,如果客户端和服务端断开怎么连到上一次操作.........................................................................................................................................35 33.如果创建 servlet 实例不用构造方法,怎么创建一个 servlet 实例 ............... 35 34.Servlet 是安全的吗?当 service 有一个实例变量,doGet 和 doPost 去调用这 个变量,会出现什么问题,你是如何解决的............................................................. 36 36.说明一下 jsp 中
3
43.Xhtml 和 html 有什么区别。..........................................................................................38 44.css 的引入方式有哪些?link 和@import的区别是? ................................................38 45.css 选择符有哪些?哪些属性可以继承?优先级如何计算?内联和 important 哪个优先级高?.............................................................................................................................38 46.前端页面由哪三层构成,分别是什么?作用是什么?............................................... 38 47.你曾经在哪些浏览器测试过兼容?这些浏览器的内核分别是什么? ....................... 38 48.标签上 title 与 alt 属性的区别是什么? ......................................................... 38 49.写出几种 IE6 BUG 的解决方法?...................................................................................38 50.描述 css reset 的作用和用途。...................................................................................39 51.你如何对网站的文件和资源进行优化?期待的解决方案包括:................................. 39 52.什么是语义化的 html? ..................................................................................................39 53.清除浮动有几种方式?各自的优缺点是?................................................................... 39 54.解释下 CSS sprites,以及你要如何在页面或网站中使用它?............................... 39 55, html5 有哪些新特性、移除了那些元素?如何处理 HTML5 新标签的浏览器兼容问题? 如何区分HTML 和 HTML5??................................................................................................40 56.javascript 的同源策略。..............................................................................................40 57、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字?否则的话提示用户 并终止提交?...........................................................................................................................40 59. jsp 有哪些内置对象?作用分别是什么?分别有什么方法? ...................................... 40 60. jsp 有哪些动作?作用分别是什么?..............................................................................41 61、JSP 的常用指令..............................................................................................................41 62. JSP 中动态 INCLUDE 与静态INCLUDE 的区别?.......................................................... 41 63、页面间对象传递的方法.................................................................................................42 三. Java web 部分........................................................................................................................42 1、Tomcat 的优化经验..........................................................................................................42 2、HTTP 请求的 GET 与 POST 方式的区别 ............................................................................42 3、解释一下什么是 servlet;..............................................................................................42 4、说一说 Servlet 的生命周期?.........................................................................................42 5、Servlet 的基本架构........................................................................................................42 6、Servlet API 中 forward()与 redirect()的区别?.................................................... 42 7、Request 对象的主要方法:............................................................................................43 8、request.getAttribute()和request.getParameter()有何区别? ...........................43 9、MVC 的各个部分都有那些技术来实现?如何实现? ........................................................ 43 10、我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso-8859-1 等,如何输出一个某种编码的字符串?.........................................................................................44 四.数据库部分...............................................................................................................................44 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 ............... 442、ORACLE 和 MySQL 的区别。..............................................................................................44 3、存储过程和函数的区别。 ...............................................................................................45 4、Oracle 导入和导出方式..................................................................................................45 5、Oracle 分页方法..............................................................................................................45 6、mysql 的分页方法............................................................................................................45 7、解释什么是死锁,如何解决 Oracle 中的死锁?......................................................... 46 8、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序46
4
9、存储过程与触发器必须讲,经常被面试到?................................................................. 46 10、数据库三范式是什么? ...................................................................................................48 11、说出一些数据库优化方面的经验?...............................................................................49 12、union 和 union all 有什么不同?................................................................................49 13.用一条 SQL 语句查询出每门课都大于 80 分的学生姓名 ............................................. 49 14.所有部门之间的比赛组合...............................................................................................50 15.显示文章标题,发帖人、最后回复时间....................................................................... 50 16.删除除了 id 号不同,其他都相同的学生冗余信息....................................................... 50 18.求出发帖最多的人:.......................................................................................................50 19、一个用户表中有一个积分字段,假如数据库中有 100 多万个用户,若要在每年第一 天凌晨将积分清零,你将考虑什么,你将想什么办法解决? ........................................... 51 21、注册 Jdbc 驱动程序的三种方式...................................................................................51 22、用 JDBC 如何调用存储过程...........................................................................................51 23、JDBC 中的 PreparedStatement相比 Statement 的好处............................................ 51 24、Class.forName的作用?为什么要用?.......................................................................... 5125、大数据量下的分页解决方法。.....................................................................................52 26、用 JDBC 查询学生成绩单,把主要代码写出来(考试概率极大). .......................... 52 27、说出数据连接池的工作机制是什么? ...........................................................................52 28、为什么要用 ORM? 和 JDBC 有何不一样?.................................................................... 53 29. 数据库大数据处理.........................................................................................................53 30. 如何写出一个快排.........................................................................................................53 31. 什么是事务?什么是锁?.............................................................................................54 32. 维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么? . 54 33. 什么是内存泄漏?.........................................................................................................54 34.触发器的作用?...............................................................................................................54 触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束, 来维护数据的完整性和一致性, 可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又 会导致该表触发器被触发。.................................................................................................54 35. 常用的 oracle 操作的命令...........................................................................................54 36, 索引的优缺点.............................................................................................................55 37.使用 oracle 伪列删除表中重复记录:?..................................................................... 55 五. XML 部分..................................................................................................................................55 1、xml 有哪些解析技术?区别是什么? ................................................................................55 2、你在项目中用到了 xml 技术的哪些方面?如何实现的? ............................................... 55 4、XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种方式?................................................................................................................................................56 六.流行的框架与新技术...............................................................................................................56 1、 谈谈你对 Struts 的理解。...................................................................................56 2、Struts 优缺点..................................................................................................................56 3、STRUTS 的应用(如 STRUTS 架构)....................................................................................57 4、谈谈你对 Hibernate 的理解。.......................................................................................57 5、你对 Spring 的理解。.....................................................................................................58 6.Spring 由哪些模块组成?..................................................................................................58
5
7. 核心容器模块。.......................................................................................................58 9、写 Hibernate 的一对多和多对一双向关联的orm 配置? .............................................58 10、在 DAO 中如何体现 DAO 设计模式?...............................................................................59 11、spring+Hibernate 中委托方案怎么配置? ..................................................................59 12. hibernate 进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有 一个实体类与之对应如何解决;.........................................................................................59 13.介绍一下 Hibernate 的二级缓存...................................................................................59 14、Jdo 是什么?....................................................................................................................60 16. IOC 的优点是什么?........................................................................................61 18. 什么是 Spring 的依赖注入?.............................................................................61 19. 有哪些不同类型的 IOC(依赖注入)方式?................................................ 61 20. 哪种依赖注入方式你建议使用,构造器注入,还是 Setter 方法注入? .. 61 21. Spring 对 DAO 的支持..........................................................................................61 22. 解释 AOP............................................................................................................61 23. Aspect 切面.......................................................................................................61 24. 在 Spring AOP 中,关注点和横切关注的区别是什么? ............................ 62 25. 连接点...................................................................................................................62 26. 通知.......................................................................................................................62 29 SpringMvc 怎么和 AJAX 相互调用的...................................................................... 62 30 当一个方法向 AJAX 返回特殊对象,譬如Object,List 等,需要做什么处理 ...... 6231 SpringMvc 里面拦截器是怎么写的........................................................................ 62 32 讲下 SpringMvc 的执行流程....................................................................................63 33 解释 Spring 支持的几种 bean 的作用域。 ............................................................ 63 34,Spring 框架中的单例 bean 是线程安全的吗? .................................................... 63 35. 解释 Spring 框架中 bean 的生命周期。 ........................................................... 63 36.哪些是重要的 bean 生命周期方法? 你能重载它们吗?................................. 64 38. 什么是基于 Java 的 Spring 注解配置? 给一些注解的例子. ....................... 64 39. 什么是基于注解的容器配置? .............................................................................64 40. 怎样开启注解装配?...........................................................................................64 41. 使用 Spring 通过什么方式访问Hibernate? ...................................................... 64 42. Spring支持的 ORM ...............................................................................................64 43.如何通过 HibernateDaoSupport 将 Spring 和 Hibernate 结合起来? ............. 64 44. Spring 支持的事务管理类型..............................................................................65 45. Spring 框架的事务管理有哪些优点?.............................................................. 65 49. 什么是 Spring MVC 框架的控制器?............................................................... 65 50. 讲下 SpringMvc 的核心入口类是什么,Struts1,Struts2 的分别是什么 ........ 65 51. SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决............ 65 52. SpingMvc 中的控制器的注解一般用那个,有没有别的注解可以替代 .............. 65 53. 如果在拦截请求中,我想拦截 get 方式提交的方法,怎么配置......................... 65 54. 如果在拦截请求中,我想拦截提交参数中包含"type=test"字符串,怎么配置65 55. SpringMvc 中函数的返回值是什么. ....................................................................66 56. SpringMVC 怎么样设定重定向和转发的.............................................................. 66 57. SpringMvc用什么对象从后台向前台传递数据的.............................................. 66 58. SpringMvc 中有个类把视图和数据都合并的一起的,叫什么 ............................ 66
6
59. 怎么样把 ModelMap 里面的数据放入Session 里面 ...........................................66 61. 当一个方法向 AJAX 返回特殊对象,譬如 Object,List 等,需要做什么处理 ... 66 63. 讲下 SpringMvc 的执行流程 .................................................................................66 64,Hibernate 是如何延迟加载?................................................................................66 66,如何优化 Hibernate?..........................................................................................67 67,在数据库中条件查询速度很慢的时候,如何优化?............................................. 67 69,Hibernate的主键生成机制..................................................................................68 69,Mybatis 比 IBatis 比较大的几个改进是什么? ................................................ 68 70,什么是 MyBatis 的接口绑定,有什么好处........................................................... 69 71,接口绑定有几种实现方式,分别是怎么实现的?................................................. 69 72,什么情况下用注解绑定,什么情况下用 xml 绑定............................................... 69 73,MyBatis实现一对一有几种方式?具体怎么操作的............................................ 69 74,MyBatis实现一对多有几种方式,怎么操作的.................................................... 69 75,MyBatis 里面的动态 Sql 是怎么设定的?用什么语法?...................................... 69 78,讲下 MyBatis的缓存.............................................................................................69 七.软件工程与设计模式...............................................................................................................70 1、j2ee 常用的设计模式?说明工厂模式。...................................................................... 70 2、开发中都用到了那些设计模式?用在什么场合?........................................................... 70 八. j2ee 部分................................................................................................................................71 2、应用服务器与 WEB SERVER 的区别?.............................................................................71 3、应用服务器有那些?.......................................................................................................71 4、J2EE 是什么?..................................................................................................................71 5、J2EE 是技术还是平台还是框架?什么是 J2EE............................................................. 71 6、如何给 weblogic 指定大小的内存?...............................................................................71 7、如何设定的 weblogic 的热启动模式(开发模式)与产品发布模式? ........................... 71 8、如何启动时不需输入用户名与密码?.............................................................................71 9、在 weblogic 管理制台中对一个应用域(或者说是一个网站,Domain)进行 jms 及 ejb或连接池等相关信息进行配置后,实际保存在什么文件中?............................................. 71 10、在weblogic 中发布 ejb 需涉及到哪些配置文件....................................................... 71 11、如何在 weblogic 中进行 ssl 配置与客户端的认证配置或说说 j2ee(标准)进行 ssl 的配置?...................................................................................................................................72 九,项目功能实现技术问题(附带源码).................................................................................72 1, java 实现 excel 模板导出: http://www.cnblogs.com/Mr-kevin/p/5793276.html.........................................................................................................................................72 2,java 中生成验证码:http://www.cnblogs.com/syscn/p/5794391.html........................ 72 3,Java-->实现群聊功能(C/S 模式--TCP 协议): http://www.cnblogs.com/xmcx1995/p/5793879.html............................................................. 72 4,Activiti 工作流学习-----基于 5.19.0 版本(4):.................................................... 72 5,Java 关于 IO 流的介绍:................................................................................................72 6,MVC 权限管理的实现流程:............................................................................................72 7,批量数据上传的 sql.xml:............................................................................................72 8, struts—文件的上传和下载:.........................................................................................72 十. 其他问题.................................................................................................................................72 1,svn 的使用和搭建?........................................................................................................72
7
2,git 命令总结?...............................................................................................................74 3.tomcat 给你你怎样去调优?..............................................................................................75 4,Tomcat 有几种部署方式..................................................................................................76 第一种方法:.................................................................................................................76 5,eclipse 中 server location 灰色,如何修改? ........................................................ 77 7,如何加大 tomcat 可以使用的内存?.............................................................................77 8,如何加大 tomcat 连接数?.............................................................................................78
8
一. Java 基础部分
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以有多个类,但只能有一个 public 的类,并且public 的类名必须与文件名相一致。 一个文件中可以只有非 public 类,如果只有一个非 public 类,此类可以跟文件名不同
2、说说&和&&的区别。
&和&&都可以用作逻辑与的运算符,&&为短路与,&不是短路与。 另外&可以做为整数的位运算符 例1:对于 if(str != null&&!str.equals(“”))表达式,当 str 为null 时,后面的表达 式不会执行,所以不会出现 NullPointerException 如果将&&改为&,则会抛出 NullPointerException 异常。 例2:If(x==33 &++y>0) y 会增长,If(x==33&& ++y>0)不会增长
3、在 JAVA 中如何跳出当前的多重嵌套循环?
1. Break + 标签 2. 使用多个条件判断 3. 使用方法的 return 在 Java 中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的 break 语句,即可跳出外层循环。例如,
ok: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) {System.out.println("i=" + i + ",j=" + j); if (j == 5) breakok; } }
另外, 我个人通常并不使用标号这种方式, 而是让外层的循环条件表达式的结果可以受到里 层循环体代码的控制,例如,要在二维数组中查找到某个数字。
int arr[][] ={{1,2,3},{4,5,6,7},{9}}; boolean found = false; for(inti=0;i
第三种,使用方法的 return
private static int test() { int count = 0;
9
for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { count++;System.out.println(" i=" + i + " immutable");="" a="newStringBuffer("");" 有编译错="" 例2:="" final="" stringbuffer="" stringbuffer("immutable");a.append(“123”);="" 正确
9、"=="和 equals 方法究竟有什么区别?
他们的区别主要存在在引用数据类型上 ==为比较两侧的对象是否同一对象,是用内存地址来比较的 equals 是方法,默认是用内存地址比较,重写后,主要是用来比较两侧的对象的值是否相 同,和 equals 方法中的实现有关 ==可以两侧都为 null,但 equals 左侧的引用指向的对象不能空,不然有 NullPointerException 除非需要比较两个引用指向的对象是同一对象,一般都使用 equals 方法进行比较。尤其是
10
String 之类的值对象,另外,常量尽量放在比较的左侧
10、静态变量和实例变量的区别?
在语法定义上的区别:静态变量前要加 static 关键字,而实例变量前则不加。 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类, 所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。 总之, 实例变量必须创建对象后才可以通过这个对象来使用, 静态变量则可以直接使用类名 来引用。
11、是否可以从一个 static 方法内部发出对非static 方法的调用?
不可以。因为非 static 方法(实例方法)是要与对象关联在一起的,必须创建一个对象后, 才可以在该对象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。 也就是说, 当一个static 方法被调用时, 可能还没有创建任何实例对象, 如果从一个 static 方法中发出对非 static 方法的调用, 那个非 static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个 static 方法内部发出对非 static 方法的调用。
12、Integer 与 int 的区别
int 是 java 提供的 8 种原始数据类型之一,意思整型,占用 4 字节。 Integer 是java 为 int 提供的封装类,是引用数据类型。 int 的默认值为 0,而 Integer 的默认值为null,即 Integer 可以区分出未赋值和值为 0 的区别,int 则无法表达出未赋值的情况。 例如,要想表达出没有参加考试和考试成绩为 0 的区别,则只能使用 Integer 在 JSP 开发中,Integer 的默认为 null,所以用 el 表达式在文本框中显示时,值为空白字 符串, 而 int 默认的默认值为 0, 所以用el 表达式在文本框中显示时, 结果为 0,所以,int 不适合作为 web 层的表单数据的类型。 在 Hibernate 中, 如果将 OID 定义为 Integer 类型, 那么 Hibernate 就可以根据其值是否为 null 而判断一个对象是否是临时的,如果将 OID 定义为了 int 类型,还需要在 hbm 映射文 件中设置其 unsaved-value 属性为 0。 另外, Integer 提供了多个与整数相关的操作方法, 例如, 将一个字符串转换成整数, Integer 中还定义了表示整数的最大值和最小值的常量。
13、Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
Math 类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的 英文名称的含义相对应,例如,ceil 的英文意义是天花板,该方法就表示向上取整, Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor 的英文意义是地板, 该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最 难掌握的是 round 方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数 字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果 为-11。
14、请说出作用域 public,private,protected,以及不写时的区别
这四个作用域的可见范围如下表所示。 说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly/default。
11
作用域 public protected friendly private
当前类 √ √ √ √
同 package √ √ √ ×
子孙类 √ √ × ×
其他 package √ × × ×
备注:只要记住了有4种访问权限,4个访问范围,然后将全选和范围在水平和垂直方向上分别按排从小到大或从大到小的顺序排列,就很容易画出上面的图了。
15、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的 类型?
Overload 是重载的意思,Override 是覆盖的意思,也就是重写。 Overload 和 Override 有共同之处,两个方法的方法名都必须相同,如果不同,既不构成 Overload,也不构成 Override。 1. Override 必须发生在父子类之间,Overload 可以不在父子类之间 2. Override 的特点: a) 参数列表完全相同:个数相同、类型相同、顺序相同 b) 子类的返回值不能比父类的返回值范围大 c) 子类方法抛出的异常不能比父类方法抛出的异常范围大 d) 修饰符只能为 public、protected、friendly,不能为 private e) 父子类方法不能使用 static 修饰 3. 重载发生在同一个类或父子类之间,重写中参数列表至少满足个数不同、类型不同、顺序不同中的一个条件,不包含父子类之间的 static 方法
17、写 clone()方法时,通常都有一行代码(不是必须有),是什么?
clone 有缺省行为,super.clone();因为首先要把父类中的成员复制到位,然后才是复制自己的成员。
18、面向对象的特征有哪些方面
1. 2. 3. 4. 封装,隐藏内部实现,只暴露公共行为 继承,提高代码的重用性 多态,体现现实生活中相似对象的差异性 抽象,抽取现实世界中相似对象的共同点
19、java 中实现多态的机制是什么?
通过继承父类或实现接口。 不同子类或实现类对同一父类方法有不同的实现。 根据对象调用 相应的实现方法。另外对于相似的方法,可以使用重载。
20、abstract class 和 interface 有什么区别?
含有 abstract 修饰符的 class 即为抽象类, abstract 类不能创建的实例对象。 含有 abstract 方法的类必须定义为 abstract class, abstract class 类中的方法不必是抽象的。 abstract class 类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract 类型。 接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接 口中的方法定义默认为 public abstract 类型, 接口中的成员变量类型默认为 publicstatic final。 下面比较一下两者的语法区别: 1.抽象类可以有构造方法,接口中不能有构造方法。 2.抽象类中可以有普通成员变量,接口中没有普通成员变量
12
3.抽象类中可以包含非抽象的普通方法, 接口中的所有方法必须都是抽象的, 不能有非抽象 的普通方法。 4. 抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然 eclipse 下不报错,但应该也不行) ,但接口中的抽象方法只能是 public 类型的,并且默认 即为 public abstract 类型。 5. 抽象类中可以包含静态方法,接口中不能包含静态方法 6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类型。 7. 一个类可以实现多个接口,但只能继承一个抽象类。下面接着再说说两者在应用上的区别: 接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约; 而抽象类在代码实现方面发挥作用,可以实现代码的重用。
21、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同 时是 synchronized?
abstract 的 method 不可以是 static 的,因为抽象的方法是要被子类实现的,而 static 与 子类扯不上关系! native 方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与 abstract 混用。synchronized 和 abstract 合用的问题不能共用, abstract 方法只能存在于抽象类或接口中, 它不能直接产生对象,而默认synchronized 方法对当前对象加锁,没有对象是不能加锁。 另外 synchronized 不能被继承,子类继承时,需要另加修改符。
22、什么是内部类?Static Nested Class 和Inner Class 的不同。
内部类就是在一个类的内部定义的类。 内部可以定义在除参数位置上的任意位置。 印象中有 四种方式。 1. 静态内部类需要使用 static 修饰,而普通内部类不能使用 static 修饰 2. 静态内部类只能定义在和属性同级,普通内部类可以定义在除参数位置以外的任意位置3. 静态内部类必需有名称,而普通内部类可以是匿名的 4. 静态内部类没有 this 引用, 只此只能访问外部类的静态成员, 而普通内部类可以访问外 部类的全部成员 5. 静态内部类访问外部类的同名函数时,使用“外部类名.方法名”即可,而普通内部类需 要使用“外部类名.this.外部方法” 6. 静态内部类可以定义静态方法,而普通内部类不能定义静态方法
23、内部类可以引用它的包含类的成员吗?有没有什么限制?
1. 如果内部类为静态内部类,只能调用外部类的静态成员;如果有重名成员,需要用“外 部类名.成员名”访问;不能调用外部类的对象成员。 2. 如果内部类为非静态内部类,则可以调用外部类的所有成员;如果有重名成员,需要使 用“外部类名.this.外部方法”
24、String 是最基本的数据类型吗?
基本数据类型包括 byte、int、char、long、float、double、boolean 和short。 String 是引用数据类型。java.lang.String 类是 final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用 StringBuffer/StringBuilder 类
13
27、String 和 StringBuffer 的区别
这两个类都实现了 CharSequence 接口。 1. 类型不同,因为不是一个类,也没有继承关系,做参数时不能共用 2. String 对象是不可变对象,不能修改值。而 StringBuffer 是可变对象,能修改值。 3. 拼接字符串时,String 会产生新对象,而 StringBuffer 只是增加新字符,不产生新对 象,因此效率高。 4.String 覆盖了 equals 方法和 hashCode 方法,而 StringBuffer 没有覆盖 equals 方法和 hashCode 方法,所以,将 StringBuffer 对象存储进 Java 集合类中时会出现问题。
28、如何把一段逗号分割的字符串转换成一个数组?
如果不查 jdk api,我很难写出来!我可以说说我的思路:1. 用正则表达式,代码大概为:String [] result = orgStr.split(“,”,-1); 2. 用 StingTokenizer ,代码为:
StringTokenizer tokener = new StringTokenizer(s, ","); String[]result = new String[tokener.countTokens()]; Integer i = 0; while (tokener.hasMoreTokens()){ result[i++] = tokener.nextToken(); } 3. 最笨的办法,用String.indexOf()int index = -1; int oldIndex = 0; List
30、final, finally, finalize 的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局部变量,局部变量必须定义成 final 类型
final int[] number = { 20 }; new Thread() { @Override public void run() { for(int k = 0; k < 20; k++) { number[0]++; } } }.start();
14
Thread.sleep(10); System.out.println(number[0]);
finally 是异常处理语句结构的一部分,表示总是执行,用来释放资源。 finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM 不保证此方法总被 调用
31、运行时异常(Runtime)与检查异常(Checked)有何异同?
异常表示程序运行过程中可能出现的非正常状态, 运行时异常表示虚拟机的通常操作中可能 遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行 时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
32、error 和 exception 有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。 比如说内存溢出, 不可能指 望程序能处理这样的情况。exception 表示一种设计或实现问题,也就是说,它表示如果程 序运行正常,从不会发生的情况。
33、Java 中的异常处理机制的简单原理和应用。
异常是指 java 程序运行时(非编译)所发生的非正常情况或错误。 Java 使用面向对象的方式来处理异常,它把程序中发生的每个异常也都分别封装到一个对 象中,该对象中包含有异常的信息。 Java 可以自定义异常类,所有异常的根类为 java.lang.Throwable,Throwable 下面又派生 了两个子类:Error 和 Exception。 1. Error 表示应用程序本身无法克服和恢复的一种严重问题,程序只有退的份了,例如说内存溢出和线程死锁等系统问题。 2. Exception 表示程序还能够克服和恢复的问题,其中又分为运行时异常和检查异常,运行时异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题, 软件使用者无法克服和恢复这种问题, 但在这种问题下还可以让软件系统继续运行或者 让软件死掉。例如,数组越界(ArrayIndexOutOfBoundsException) ,空指针异常 (NullPointerException)、类转换异常(ClassCastException) ;检查异常是运行环境 的变化或异常所导致的问题, 是用户能够克服的问题,例如, 网络断线, 硬盘空间不够, 发生这样的异常后,程序不应该死掉。 Java 为运行时异常和检查异常提供了不同的解决方案,编译器强制检查异常必须 try..catch 处理或用 throws 声明继续抛给上层调用方法处理,所以检查异常也称为 checked 异常, 而运行异常可以处理也可以不处理, 所以编译器不强制用 try..catch 处理或用 throws 声明,所以运行异常也称为 Runtime 异常。 提示答题者:就按照三个级别去思考:虚拟机必须宕机的错误,程序可以死掉也可以不死掉 的错误,程序不应该死掉的错误
34、请写出你最常见到的 5 个RuntimeException。
NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、 IllegelArgumentException、SecurityException。
15
35、Java 语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在 try 块中可以抛出异常吗?
1. Java 语言如何进行异常处理见 43 题 2.throws 为向上抛异常 throw 程序出错时,手工抛出异常 try 尝试执行,里面的语句可能出现异常,如出现异常需要处理 catch 处理 try 中出现的异常 finally 在 try 后执行清理操作,用于释放资源 3. 在 try 中可以抛出异常
36, Java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop() 和 suspend()方法为何不推荐使用?
java5以前,有如下两种: 第一种: new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法,new Thread(){}表示一 个 Thread 的匿名子类的实例对象,子类加上 run 方法后的代码如下:
new Thread() { public void run() { } }.start();
第二种: new Thread(new Runnable(){}).start();这表示调用 Thread 对象接受的 Runnable 对象的 run 方法,new Runnable(){}表示一个 Runnable 的匿名子类的实例对象,runnable 的子类加 上 run 方法后的代码如下:
new Thread(new Runnable() { public void run() { } }).start();
从 Java5开始,还有如下一些线程池创建多线程的方式:
ExecutorService pool = Executors. newFixedThreadPool(3);
16
for (int i = 0; i < 10; i++) { pool.execute(new Runable() { public voidrun() { } }); } Executors.newCachedThreadPool().execute(new Runable() { publicvoid run() { } }); Executors.newSingleThreadExecutor().execute(new Runable() {public void run() { } });
有两种实现方法,分别使用 new Thread()和 newThread(runnable)形式,第一种直接调用 thread 的 run 方法,所以,我们往往使用 Thread 子类,即 new SubThread()。第二种调用 runnable 的 run 方法。 1. 有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口。可以的话使用线程池 2. 用 synchronized 关键字修饰同步方法 3. 反对使用 stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态, 那么其他线程能在那种状态下检查和修改它们。 结果很难检查出 真正的问题所在。suspend()方法容易发生死锁。调用 suspend()的时候,目标线程会 停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资 源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用 suspend(),而应在 自己的 Thread 类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该 挂起,便用 wait()命其进入等待状态。若标志指出线程应当恢复,则用一个 notify() 重新启动线程。
38、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
同步是指所有操作串行化执行,顺序不能改变,前一操作未完成,后个操作不执行。 异步是指所有操作可以并行执行,顺序无关。 例如寄信 同步:如果没有寄完,不能吃饭,邮递员10天后送到,发送人被饿死 异步:寄出后可以立即吃饭,邮递员送完后,通知发送人送信结果。 如果强调执行顺序的话,用同步。如果顺序无关,则可以用异步。异步执行效率比同步高。
39. 下面两个方法同步吗?(自己发明)
class Test { synchronized static void sayHello3() { } synchronized void getX(){ } }
17
40、多线程有几种实现方法?同步有几种实现方法?
多线程有两种实现方法,分别是继承 Thread 类与实现Runnable 接口 同步的实现方面有五种,分别是 synchronized、wait 与 notify、sleep、suspend、join synchronized: 一直持有锁,直至执行结束 wait():使一个线程处于等待状态,并且释放所持有的对象的 lock,需捕获异常。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,需捕获异常,不释放锁。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤 醒某一个等待状态的线程,而是由 JVM 确定唤醒哪个线程,而且不是按优先级。 notityAll():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁, 而 是让它们竞争。
41、启动一个线程是用 run()还是 start()?
启动一个线程是调用 start()方法,使线程就绪状态,以后可以被调度为运行状态,一个线 程必须关联一些具体的执行代码,run()方法是该线程所关联的执行代码。
42、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进 入此对象的其它方法?
如果其它方法中使用当前对象作为锁对象,则不能; 如果其它方法中没有使用当前对象作为锁对象,则能。
43、线程的基本概念、线程的基本状态以及状态之间的关系
在多任务操作系统中,为了提高 CPU 的利用率,可以使用多进程编程。但对进程通信比较困 难,进程间数据不能共享,因此可以使用多线程编程。一个进程至少包含一个主入口线程。单个 CPU,在同一时间只能处理一个线程的数据,但是操作系统的任务调度非常快,人眼无 法识别,感觉上是多个线程同时执行。有的线程可以已经用完 CPU,正在作磁盘操作,此时 并不使用 CPU,可以让出 CPU 资源给其它线程使用,提高效率。 线程有生命周期及相关关系和对应方法如下图:
45、介绍 Collection 框架的结构
Iterable ->Collection ->List ->ArrayList ->LinkedList ->Vector->Stack ->Set ->HashSet ->TreeSet Map ->Hashtable ->HashMap->LinkedHashMap Collections,不属于集合,是集合类的工具类
18
Arrays,不属于集合类,是数据对象的工具类
46、ArrayList 和 Vector 的区别
1. 线程同步,Vector 线程安全,ArrayList 线程不安全 2. 效率问题,Vector 效率低,ArrayList效率高 3. 增长数量,Vector 以 1.5 倍增长,ArrayList 以2 倍增长
47、HashMap 和 Hashtable 的区别
1. 线程同步,Hashtable 线程安全,HashMap 线程不安全 2. 效率问题,Hashtable 效率低,HashMap 效率高 3. HashMap 可以使用 null 作为 key,Hashtable不可以使用 null 为 key 4. HashMap 使用的是新实现,继承 AbstractMap,而 Hashtable 是继承 Dictionary 类,实 现比较老 5. Hash 算不同,HashMap 的 hash 算法比Hashtable 的 hash 算法效率高 6.HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsValue 和 containsKey。 因为 contains 方法容易让人引起误解。 7. 取值不同,HashMap 用的是 Iterator 接口,而 Hashtable 中还有使用 Enumeration 接口
48、List 和 Map 区别?
一个是存储单列数据的集合,另一个是存储键和值的双列数据的集合,List 中存储的数据 是有顺序,并且允许重复;Map 中存储的数据是没有顺序的,其键是不能重复的,它的值是 可以有重复的。 1.List 有重复值,Map 没有重复 key,但可以有重复值 2. List 有序,Map 不一定有序 3. List 只能存单列值,Map 可以存双列值
49、List, Set, Map 是否继承自Collection 接口?
List,Set 是,Map 不是
50、List、Map、Set 三个接口,存取元素时,各有什么特点?
List 使用 get(index)取值,也可以使用Iterator、toArray 取值 Set 只能通过 Iterator、toArray 取值Map 取值使用 get(key)取值,也可以使用keySet 取键值集合,也可使用 values 取值集合,entrySet 取全部映射。
51、说出 ArrayList,Vector, LinkedList 的存储性能和特性
1. ArrayList 和 Vector 使用数组存储元素;LinkedList使用链表存储元素 2. ArrayList 和 Vector 插入删除数据时,需要搬运数据, 效率较差; LinkedList 使用链表, 不需要搬运数据,效率高 3. ArrayList 和 Vectory 查询时,按数组下标查询,不需要遍历,效率高;LinkedList 需 要遍历,查询效率底 4. ArrayList 和 Vector 的区别见 59 条
51、去掉一个 Vector 集合中重复的元素
1. 自行遍历,用另外一个 Vector 来判断是否有重复2. 用 Set(TreeSet 或 HashSet)来去重 3. 用 Apache 的CollectionUtil 工具类去重
Vector newVector = new Vector(); for (int i = 0; i < vector.size(); i++) {Object obj = vector.get(i);
19
if (!newVector.contains(obj)) newVector.add(obj); }
还有一种简单的方式,HashSet set = new HashSet(vector);
53、Collection 和 Collections 的区别。
Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List. Collections 是针对集合类的一个工具类,他提供一系列静态方法实现对各种集合的搜索、 排序、线程安全化等操作。
54、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还 是 equals()?它们有何区别?
Set 里的元素是不能重复的,元素重复与否视具体情况而定: 1. HashSet 使用 equals 比较 2. TreeSet 使用 compareTo 进行比较
55、你所知道的集合类都有哪些?主要方法?
最常用的集合类接口是 List 和 Map。 List 的具体实现包括 ArrayList、Vector、LinkedList,它们是可变大小的列表,比较适合 构建、存储和操作任何类型对象的元素列表。List 适用于按数值索引访问元素的情形。 Set 的具体实现包括 HashSet 和 TreeSet,它们也是可变大小集合,但不适合用索引取值。 Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作"键"和"值") , 其中每个键映射到一个值。 ArrayList/Vector、LinkedList HashSet/TreeSetàSet Properties/HashTable/TreeMap/HashMapList 的主要方法有: add、get、remove、set、iterator、contains、addAll、removeAll、indexOf、toArray、clear、isEmpty Set 的主要方法有: add、remove、iterator、contains、addAll、removeAll、toArray、clear、isEmpty Map 的主要方法有: put、get、keySet、values、entrySet、clear、remove、isEmpty
56、两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这 句话对不对?
1. 2. 3. 4. 5. equals 等,hashCode 同,因此重写 equals 方法必须重写 hashCode hashCode 等,equals 不一定同,但 hashCode 最好散列化 任何对象 equals null 都得 false 没有继承关系的两个类,equals 都得 false 重写equals 方法的类最好是值类,即不可变
68、说出一些常用的类,包,接口,请各举 5 个
要让人家感觉你对 java ee 开发很熟,所以,不能仅仅只列core java 中的那些东西,要多 列你在做 ssh 项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。常用的类: BufferedReader, BufferedWriter, FileReader, FileWirter, String, Integer,java.util.Date,System,Class,List,HashMap
20
常用的包:java.lang,java.io,java.util,java.sql,javax.servlet, org.apache.strtuts.action,org.hibernate 常用的接口: List,Map,Document,NodeList,Servlet,HttpServletRequest, HttpServletResponse,Transaction(Hibernate) ,Session(Hibernate),HttpSession
59、Java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
字节流, 字符流。 字节流继承于 InputStream、OutputStream, 字符流继承于 Reader、Writer。 在 java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。 FileInputStream、 FileReader、 BufferedInputStream、 BufferedReader、 ZipInputStream、 PrintStream、StringReader、ObjectInputStream、RandomAccessFile(不属于流,但像流)
60、字节流与字符流的区别
字节流是按字节读取或写入设备,但字符流是以字符为单位读取或写入设备。 如果是二进制文件,需要用字节流读取。一般来说,字符流只处理文本文件。在设备中,大多数情况是以字节形式存储数据的,因此字符流通过需要传入字节流当参数。
61、什么是 java 序列化,如何实现 java 序列化?或者请解释 Serializable 接 口的作用。
序列化是把内存 Java 对象保存到存储介质中,反序列化就是把存储介质中的数据转化为 Java 对象。Java 通过ObjectInputStream 和 ObjectOutputStream 实现序列化和反序列化。需要进行序列化的对象的类必须实现 Serializable 接口,通常情况下需要满足以下条件: 1. 强烈建议手动生成 serialVersionUID 常量 2. 如果需要加解密的话,需要实现两个方法 readObject 和 writeObject 方法 3. 如果使用 Hibernate 二级缓存或其它缓存服务器的话,对象必须是可序列化的 4. 如果需要远程调用对象或传值的话,则对像需要序列化 5. 序列化类的可序列化成员必须也是可序列化的,不需要序列化的属性用transient 修饰
62、描述一下 JVM 加载 class 文件的原理机制?
1. 2. 3. 4. 查找当前 ClassLoader 中是否有此 class 的类对象,有则返回 若没有的话,向上递归所有的父 ClassLoader 中有无此 class 类对象,有则返回 若还没有,查找 BootstrapClassLoader中有无此 class 类对象,有则返回 若还没有的话,使用findClass 或 resolveClass 加载类对象a. 读取 class 二进制文件 b. 根据字节数组生成 Class 对象 c. 缓存到当前ClassLoader 中
JVM 加载 class 对象是懒加载,按需加载
63、heap 和 stack 有什么区别。
Java 的内存分为两类,一类是栈内存,一类是堆内存。 栈中存储的是当前线程的方法调用、基本数据类型和对象的引用,栈是有序的。 堆中存储的是对象的值,堆是无序的。方法中的局部变量使用 final 修饰后,放在堆中,而不是栈中。
64、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么 办法主动通知虚拟机进行垃圾回收?
对于 GC 来说,当程序员创建对象时,GC 就开始监控这个对象的地址、大小以及使用情况。通常,GC 采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对
21
象是"可达的",哪些对象是"不可达的"。当GC 确定一些对象为"不可达"时,GC 就有责任回 收这些内存空间。可以。程序员可以手动执行 System.gc(),通知 GC 运行,但是 Java 语言 规范并不保证 GC 一定会执行。
65、什么时候用 assert。
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。 在实现中,assertion 就是在程序中的一条语句,它对一个 boolean 表达式进行检查,一个正确程序必须保证这个 boolean 表达式的值为 true;如果该值为 false, 说明程序已经处于 不正确的状态下,assert 将给出警告或退出。一般来说,assertion 用于保证程序最基本、 关键的正确性。assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布后, assertion 检查通常是关闭的。
66、能不能自己写个类,也叫 java.lang.String?
可以,如果非要实现 java.lang.String,需要自已写 ClassLoader,不然 JVM 优先加载默认 rt.jar 中的 java.lang.String。 可以,但在应用的时候,需要用自己的类加载器去加载,否则,系统的类加载器永远只是去加载 rt.jar 包中的那个 java.lang.String。由于在 tomcat 的 web 应用程序中, 都是由 webapp 自己的类加载器先自己加载 WEB-INF/classess 目录中的类,然后才委托上级的类加载器加载,如果我们在 tomcat 的 web 应用程序中写一个 java.lang.String,这时候 Servlet 程序 加载的就是我们自己写的 java.lang.String,但是这么干就会出很多潜在的问题,原来所 有用了java.lang.String 类的都将出现问题。 虽然 java 提供了 endorsed 技术,可以覆盖 jdk 中的某些类,但是,能够被覆盖的类是有限制范围,反正不包括 java.lang 这样的包中的类。 (下面的例如主要是便于大家学习理解只用,不要作为答案的一部分,否则,人家怀疑是题目泄露了)例如,运行下面的程序:
package java.lang; public class String { public static void main(String[] args){ System.out.println("string"); } }
报告的错误如下: java.lang.NoSuchMethodError:main Exceptioninthread "main" 这是因为加载了 jre 自带的 java.lang.String,而该类中没有 main 方法。
67、SSH 集成方式
1. 在web.xml中配置struts的servlet或filter入口类,同时在web.xml中配置spring的listener和配置文件路径 2. 引用SSH所需的jar包放在WEB-INF/lib下,需要有struts-spring-plugin.jar 3. 在struts.xml配置中,把Struts的Action类交由Spring托管 4. 把Hibernate所需的DataSource,SessionFactory, Transcation, HibernateTemplate
22
配置在Spring的配置文件中 5. Dao层的类有时需要继承HiberateDaoSupport类,如果有HibernateTemplate时,可以不继承 6. 把Action、Service、Dao等类注册到Spring中管理
二.算法与编程
1、编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格 进行分隔。
答:
package com.bwie.interview; import java.io.IOException; import java.io.InputStreamReader;import java.io.PrintStream; import java.util.StringTokenizer; public classAnswerB01 { public static void main(String[] args) throws IOException {StringTokenizer tokenizer1 = getTokenzer("/a.txt"); StringTokenizertokenizer2 = getTokenzer("/b.txt"); PrintStream out = newPrintStream("C:/c.txt"); while (tokenizer1.hasMoreTokens() &&tokenizer2.hasMoreTokens()) { out.println(tokenizer1.nextToken());out.println(tokenizer2.nextToken()); } out.close(); } private staticStringTokenizer getTokenzer(String fileName) throws IOException {InputStreamReader reader = newInputStreamReader(AnswerB01.class.getResourceAsStream(fileName)); StringBuilderbuilder = new StringBuilder(1000); int length = -1; char[] cs = new char[1024];while ((length = reader.read(cs)) != -1) { builder.append(cs, 0, length); }reader.close(); return new StringTokenizer(builder.toString());
23
} }
2、编写一个程序,将 d:\java 目录下的所有.java 文件复制到 d:\jad 目录下, 并将原来文件的扩展名从.java 改为.jad。
(大家正在做上面这道题, 网上迟到的朋友也请做做这道题, 找工作必须能编写这些简单问 题的代码! ) 答: listFiles方法接受一个 FileFilter 对象, 这个FileFilter 对象就是过虑的策略对象, 不同的人提供不同的 FileFilter 实现,即提供了不同的过滤策略。
import java.io.File; import java.io.FileInputStream; importjava.io.FileOutputStream; import java.io.FilenameFilter; importjava.io.IOException; public class AnswerB02 { public static void main(String[]args) throws IOException { File sourceFolder = new File("D:/java");File[] files = sourceFolder.listFiles(new JavaFileFilter()); for (File file :files) { String absolutePath = file.getName(); String targetFile = "D:/jad/"+ absolutePath.substring(0, absolutePath.length() - 5) + ".jad";
copy(file, new File(targetFile));
} } private static void copy(File source, File target) throws IOException {FileInputStream input = new FileInputStream(source); FileOutputStream out = newFileOutputStream(target); int length = -1; byte[] bs = new byte[1024]; while((length = input.read(bs)) != -1) { out.write(bs, 0, length); } input.close();out.close(); } private static final class JavaFileFilter implementsFilenameFilter { @Override public boolean accept(File dir, String name) {return name.endsWith(".java");
24
} } }
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节 截取的字符串,但要保证汉字不被截取半个,如“我 ABC”,4,应该截取“我 AB”,输入“我 ABC 汉 DEF”,6,应该输出“我 ABC”,而不是“我 ABC+汉的 半个”。
import java.io.IOException; public class AnswerB03 { public static voidmain(String[] args) throws IOException { String s = "我ABC汉DEF";System.out.println(substring(s, 6)); } public static String substring(String s,int length) { char[] cs = s.toCharArray(); StringBuilder builder = new StringBuilder();int count = 0; for (char c : cs) { if (isAsc(c)) { count++; } else { count +=2; } if (count > length) { break; } builder.append(c); } returnbuilder.toString(); } public static boolean isAsc(char c) { return c < 128;} }
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印 出各个字符的个数。
答:哈哈,其实包含中文字符、英文字符、数字字符原来是出题者放的烟雾弹。
String content = "中国aadf的111萨bbb菲的zz萨菲";HashMap map = new HashMap(); for (int i = 0; i < content.length; i++) { charc = content.charAt(i); Integer num = map.get(c); if (num == null)
25
num = 1; else num = num + 1; map.put(c, num); } for (Map.EntrySet entry : map){ system.out.println(entry.getkey() + ":" + entry.getValue()); }
估计是当初面试的那个学员表述不清楚,问题很可能是: 如果一串字符如"aaaabbc 中国1512"要分别统计英文字符的数量,中文字符的数量,和数字 字符的数量,假设字符中没有中文字符、英文字符、数字字符之外的其他特殊字符。
int engishCount; int chineseCount; int digitCount; for (int i = 0; i
5、说明生活中遇到的二叉树,用 java 实现二叉树
这是组合设计模式。 我有很多个(假设10万个)数据要保存起来, 以后还需要从保存的这些数据中检索是否存在某 个数据, (我想说出二叉树的好处,该怎么说呢?那就是说别人的缺点),假如存在数组中, 那么,碰巧要找的数字位于99999那个地方,那查找的速度将很慢,因为要从第1个依次往后 取, 取出来后进行比较。 平衡二叉树 (构建平衡二叉树需要先排序, 我们这里就不作考虑了) 可以很好地解决这个问题,但二叉树的遍历(前序,中序,后序)效率要比数组低很多,原理如下图: 代码如下:
public class AnswerB04 { public static void main(String[] args) { Node root =makeupTree();
traverse(root);
} private static void traverse(Node node) { if (node == null) { return; }
26
traverse(node.left); System.out.println(node.value); traverse(node.right);
} private static Node makeupTree() { Node root = new Node(0); Node node1 = newNode(1); Node node2 = new Node(2); Node node11 = new Node(11); Node node12 =new Node(12); Node node21 = new Node(21); Node node22 = new Node(22); root.left= node1; root.right = node2; node1.left = node11; node1.right = node12;node2.left = node21; node2.right = node22; return root; } public static classNode { public Node left; public Node right; public int value; public Node(intvalue) { this.value = value; } } }
8、递归算法题 1
一个整数,大于0,不用循环和本地变量,按照 n,2n,4n,8n 的顺序递增,当值大于5000 时,把值按照指定顺序输出来。 例:n=1237 则输出为: 1237, 2474, 4948, 9896,
27
9896, 4948, 2474, 1237, 提示:写程序时,先致谢按递增方式的代码,写好递增的以后,再增加考虑递减部分。
public static void doubleNum(int n) { System.out.println(n); if (n <= 5000)
doubleNum(n * 2); System.out.println(n);
} Gaibaota(N) = Gaibaota(N-1) + n
9、递归算法题 2
第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?
package cn.itcast; import java.util.Date; public class A1 { public static voidmain(String[] args) { System.out.println(computeAge(8)); } public static intcomputeAge(int n) { if (n == 1) return 10; return computeAge(n - 1) + 2; } }public static void toBinary(int n, StringBuffer result) { if (n / 2 != 0)toBinary(n / 2, result); result.append(n % 2); }
10、排序都有哪几种方法?请列举。用 JAVA 实现一个快速排序。
本人只研究过冒泡排序、选择排序和快速排序,下面是快速排序的代码: 冒泡排序:
private static void bubbleSort(int[] array) { for (int i = 1; i
if (array[i] < array[j]) { int temp = array[i]; array[i] = array[j]; array[j]= temp; } } } }
快速排序:
public class QuickSort { public void quickSort(String[] strDate, int left, intright) { String middle, tempDate; int i, j; i = left; j = right; middle =strDate[(i + j) / 2]; do { while (strDate[i].compareTo(middle) < 0&& i < right) i++; // 找出左边比中间值大的数 while(strDate[j].compareTo(middle) > 0 && j > left) j--; // 找出右边比中间值小的数 if (i <= j) { // 将左边大的数和右边小的数进行替换tempDate = strDate[i]; strDate[i] = strDate[j]; strDate[j] = tempDate; i++;j--; } } while (i <= j); // 当两者交错时停止 if (i < right){ quickSort(strDate, i, right); } if (j > left) { quickSort(strDate, left,j); } } public static void main(String[] args) { String[] strVoid = newString[] { "11", "66", "22", "0","55", "22", "0", "32" }; QuickSort sort= new QuickSort(); sort.quickSort(strVoid, 0, strVoid.length - 1); for (int i =0; i < strVoid.length; i++) {
29
System.out.println(strVoid[i] + " "); } } }
11、有数组 a[n],用 java 代码将数组元素顺序颠倒
public class AnswerB11 { public static void main(String[] args) { int[] array ={ 2, 25, 21, 63, 234, 83 };
reverse(array); System.out.println(Arrays.toString(array));
} private static void reverse(int[] array) { for (int i = 0; i
12 不使用递归遍历二叉树
import java.util.Stack; public class AnswerB13 { public static voidmain(String[] args) { Node tree = makeupTree(); Stack
30
} } } private static Node makeupTree() { Node root = new Node(0); Node node1 =new Node(1); Node node2 = new Node(2); Node node11 = new Node(11); Node node12= new Node(12); Node node21 = new Node(21); Node node22 = new Node(22);root.left = node1; root.right = node2; node1.left = node11; node1.right =node12; node2.left = node21; node2.right = node22; return root; } public staticclass Node { public Node left; public Node right; public int value; publicNode(int value) { this.value = value; } } }
31
三.前端页面部分
3.当 service 有一个实例变量,doGet 和 doPost 去调用这个变量,会出现什么 问题,你是如何解决的。
会出现线程不安全问题。无论是 doGet 还是 doPost 去调用,服务器端处理的过程都是一样的,那么我们可以把处理过程单独写在另外一个方法 handle 里,让两个方法都去调用 hand le,根据不同请求去调用不同的方法。 4.有三台服务器,如果在一台服务器上登陆了这个用户,其他两台就不能再登
陆这个用户,使用 session 共享,你是怎么做的。
把所有的 session 的数据保存到 Mysql 服务器上,所有 Web 服务器都来这台 Mysql 服务器来 获取 Session 数据。 5.写一个自定义标签要继承什么类 SimpleTagSupport,一般调用 doTag 方法或者实现 SimpleTag 接口
6.Jsp 如何处理 json
在 jsp 中处理 JSON,通常需要配套使用 JQuery 控件,并且导入一些 Common jar 包。使 用 JQuery 控件是因为它能有效的解析并且展示 JSON 数据,导入 Common 则是因为 Java 中的对象并不是纯粹的数据,需要通过这些 Jar 包的处理使之转化成真实数据。 7.Jsp 的重定向和转发的流程有什么区别重定向是客户端行为,转发是服务器端行为 重定向时服务器产生两次请求, 转发产生一次请求, 重定向时可以转发到项目以外的任何网 址,转发只能在当前项目里转发 重定向会导致 request 对象信息丢失。转发则不会 转发的 url 不会变,request.getRequestDispatch()。forward() 重定向的 url 会改变,response.getRedirect(); 8.Jsp 和 servlet 的区别 jsp 的可读性强,容易维护,并且 jsp 在最后会编译成 servlet,servlet 容易调试。 9.jsp 可以操作窗口吗? Jsp 不能够直接调用窗口,只能先 生成打开窗口的 js,再由 js 调用
32
10.session 的主要几个方法的区别 Session 不能通过 new 创建, 需要通过调用 getSession()或者 getSession(true)方法创建, getSession()是自动创建 session,getSession(true)是强制创建 session,setAttribute ()方法可以用于传值,getAttribute()可以用于取值 (第一次创建 session 的时候,就是访问第一次一个 jsp 页面<这个页面的page 指令 没有 设置 session=false>) 销毁 session 调用 invalidate 方法 通过 setMaxInactiveInterval()可以设定 session 的生存时间(web.xml 可以设置 session 的生存时间) 11.jsp 的三大指令,七大动作的具体功能 三大指令: Page :指令是针对当前页面的指令 Include :用于指定如何包含另一个页面 Taglib :用于定义和指定自定义标签七大动作: Forward,执行页面跳转,将请求的处理转发到另一个页面Param :用于传递参数 Include :用于动态引入一个jsp 页面 Plugin :用于下载 javaBean 或 applet 到客户端执行 useBean :使用 javaBean setProperty :修改 javaBean 实例的属性值 getProperty :获取 javaBean 实例的属性值 12.获取页面的元素和值有几种方式,分别说一下request.getParameter() 返回客户端的请求参数与值request.getParameterNames() 返回所有可用属性名的枚举request.getParameterValues() 返回包含参数的所有值的数组 13.servlet 和 javaScript 的区别,他们分别是什么作用 一个是服务端,一个是客户端Servlet 是独立于平台和协议的服务器端的 java 应用程序,可以动态生成 web 页面,并采 用响应--请求的模式提供 web 服务 javaScript 是一种解释性语言,用于向 html 页面提供交互行为,通常被直接嵌入在 html 页面中 servlet 是 java 语言编写的 web 应用 js 是基于 html 上的一种解释语言
33
14.jsp 的执行原理 客户端发出请求(request),jsp引擎将 jsp 页面翻译成 servlet 的 java 源文件,在 Tomc at 中将源文件编译成 class 文件,并加载到内存中执行,把结果返回(response)给客户端。 16.HTML 和 Servlet 的异同 不同: Html 是静态,servlet 是动态 html 页面由服务器直接返回, servlet 是用来处理客户请求,并返回 html 页面 //servlet 需要服务器调用 servlet 方法生成动态 html 页面, 且需要在 web.xml 中配置 url 路径17.会话跟踪有哪些,他们的区别是什么 Cookie,session和 application, Cookie 是 http 对象,客户端与服务端都可以操纵 cookie 是在客户端保持状态,session 是在服务器端保持状态,由于 cookie 是保存在客户 端本地的,所以数据很容易被窃取, 当访问量很多时, 使用 session 则会降低服务器的性能, application 的作用域是整个工程里只有一个,可以在不同浏览器之间共享数据,所有人都 可以共享,因此 application 也是不安全的 18.session 和 application 的作用 Session 用于客户端与服务器之间保持状态的解决方案,数据保存在服务器内存中,底层是有 cookie 实现的 Application 的作用域是整个工程里只有一个,可以在不同浏览器之间共享数据,所有人都可以共享,因此 application 是不安全的。 19.request ,response,session 和application 是怎么用的 Request 是客户端向服务端发送请求 Response 是服务端对客户端请求做出响应 Session 在 servlet 中不能直接使用, 需要通过 getSession()创建,如果没有设定它的生命 周期,或者通过 invildate()方法销毁,关闭浏览器 session 就会消失 Application 不能直接创建,存在于服务器的内存中,由服务器创建和销毁 20.有几种方式将页面的值传到后台 可通过 form 表单的 get 或 post 将值传递到后台,也可通过 setAttribute()方法将值传递 到后台 21.一个 form 表单的值如何获取 在 servlet 中通过 request.getParameter()方法可以获取表单的值 或者是request.getParameterValuse();
34
22.传递参数到后台有几种方式 表单传参,url 传参,jquery.ajax传参 23.Jsp 中父页面中怎么拿到子页面的表单元素,不是拿值怎么拿 通过设置属性 setAttribute(),通过 getAttribute()拿值,getParameter()方法可以做到 24.定义一个 String 类型的字符串,如果重定向之后还能不能获得这个数据 不能 25.404 和 500 是什么意思 404 :找不到url 请求的路径,一般是工程名不对或者拼写错误 500 :服务器内部错误,一般是服务器内部代码编写错误,也有可能是抛异常导致 26.写出 5 种 JSTL 常用标签
35
34.Servlet 是安全的吗?当 service 有一个实例变量,doGet 和 doPost 去调用这个变量, 会出现什么问题,你是如何解决的是线程不安全的,因为 servlet 是单例模式,当多个客户端共同访问的时候线程不安全。 尽量用局部变量,同步块,如果当前字段是不会改变的,用 final 修饰 36.说明一下jsp 中
36
41,关于 Ajax 的技术组成与核心原理
1、Ajax 特点: 局部刷新、提高用户的体验度,数据从服务器商加载。 2、AJax 的技术组成:不是新技术,而是之前技术的整合 Ajax: Asynchronous Javascript And Xml;(异步的JavaScript 和 XML) 包括的技术:JavaScript、XML、CSS、XMLHttpRequest异步:发送请求以后,不等结果,由回调函数处理。 JavaScript:向服务器发送请求,获得返回结果,更新页面 XML: 用来封装数据 3、Ajax 核心原理 XMLHttpRequst 对象:通过该对象向服务器发送请求。 它是异步请求的技术,所有现代浏览器都支持(Chrome、IE5+) 1)创建 XMLHttpReuest 对象 非 IE 浏览器(Mozilla/Safari): var xhr=newXMLHttpRequest(); IE: xhr=new ActiveXObject("Msxml2.XMLHTTP"); 低版本 IE: xhr=new ActiveXObject("Microsfot.XMLHTTP");2)XMLHttpRequest 对象的属性与方法 a)方法:open("GET/POST",URL,true/false):用来向服务器建立连接 有三个参数: 参数 1:提交方式,post 或 get 参数 2:请求的 URL 参数 3:表示同步或异步请求,true:表示异步请求 false: 表示同步请求 send(data):发送请求 参数:提交的内容。 POST 方式:data 就是提交的参数,send(username=root&password=abc123); GET 方式:send(null) b)属性: onreadystatechange:设置状态改变时的回调函数,回调函数用来获取服务器数据。 onreadystatechange=function(){ }
readyState:服务器状态响应 状态码: 0:未初始化1:正在加载 2:加载完成 3:请求进行中
37
4:请求完成 responseText:服务器返回的数据(文本格式) responseXML:服务器返回的数据(XML 格式)
43.Xhtml 和 html 有什么区别。
Html(超文本标记语言)是标准通用标记语言下的一个应用,也是一种规范,一种标准。 Xhtml(可扩展超文本标记语言)是一种置标语言,表现方式与 html 类似,不过语法上更加 严格,主要不同: 1,所有元素必须被正确嵌套, 2,所有标记必须闭合, 3,标签名,属性名必须小写字母, 4,所有的属性必须用“”括起来, 5,所有非标签一部分的><&都必须以编码形式, 6,所有属性必须要有值, 7,注释中不要有-8,图片必须要有说明文字
44.css 的引入方式有哪些?link 和@import 的区别是?
四种:内联,内嵌,外链,导入 区别: 1,link 属于 xhtml 标签,@import 完全是 css 提供的一种方式,link 除了加载 css 还可以 定义 rss,定义rel 属性等,@import 只能加载 css。 2,加载顺序差别:link 引用的css 是同时被加载的,@import 引用的 css 会等到页面全部被下载完才会再被加载。 3,兼容性差别,@import 是 css2.1 提出,ie5 以上才支持,link 没有兼容问题。 4, 使用dom 控制样式的差别, 当用 javascript 去控制样式的时候, 只能使用 link, @import 不是dom 能控制的。 5,@import 可以在 css 中再次引入其他样式表。
45.css 选择符有哪些?哪些属性可以继承?优先级如何计算?内联和 important 哪个优先级高?
标签选择符,类选择符,id 选择符,继承的不如指定的,id>class>TagnameImportant 优先级高
46.前端页面由哪三层构成,分别是什么?作用是什么?
结构层:html 由 html 或者 xhtml 负责创建,运用标签对网页内容的含义作出描述。 表示层:css 由 css 负责创建,对如何显示有关内容做出回答。 行为层:javascript 由 javascript 负责创建,负责回答应该如何对事件作出反应。
47.你曾经在哪些浏览器测试过兼容?这些浏览器的内核分别是什么?
Ie(ie 内核) ,火狐(Gecko) ,谷歌(webkit) ,opera(presto) 48.标签上 title 与 alt 属性的区别是什么? Alt 是在你的图片因为某种原因不能加载的时候在页面显示的提示信息,它会直接输出在原 本加载图片的地方,title 是在鼠标悬停在图片上的显示的小提示,鼠标离开就没了,绝大 数 html 标签都支持 title。49.写出几种 IE6 BUG 的解决方法? 1.双边距 BUG float 引起的 使用 display 2.3 像素问题 使用 float 引起的 使用 dislpay:inline -3px
38
3.超链接 hover 点击后失效 使用正确的书写顺序link visited hover active 4.Ie z-index 问题 给父级添加position:relative 5.Png 透明 使用 js 代码 改 6.Min-height 最小高度 !Important 解决’ 7.select 在 ie6 下遮盖 使用 iframe 嵌套 8.为什么没有办法定义 1px 左右的宽度容器(IE6 默认的行高造成的,使用 over:hidden,zoom:0.08 line-height:1px) 50.描述 css reset 的作用和用途。 Css reset 重置浏览器的默认 css 样式,浏览器种类不同,默认样式不一样,通过使用 css reset 重置,让他们统一,方便开发。 51.你如何对网站的文件和资源进行优化?期待的解决方案包括: 1,尽可能减少 http 请求数(文件合并) 2,使用CDN(内容分发网络) 3,添加Expire/Cache-Control 头 4,启用 Gzip压缩 5,css 放在页面最上面 6,scrip 放在页面最下面 7,避免在 css 中使用 Expressions 8,把 js 和 css 放在外部文件中 9,减少 dns 查询 10,压缩javascript 和 css 11,避免重定向 12,移除重复脚本 13,配置实体标签 14,使用ajax 缓存 52.什么是语义化的 html?根据内容的结构化(内容语义化) ,选择合式的标签(代码语义化) ,便于开发者的阅读和写 出更加优雅的代码的同时让浏览器的爬虫和机器更好地解析。 53.清除浮动有几种方式?各自的优缺点是? 1,父级定义 height(优点:代码少,简单易掌握;缺点:只适合固定高度元素,无法高度 自适应)2,结尾处使用空标签清除浮动:Clear:both(优点:理论上能清除所有标签的浮动,简代 码少浏览器支持好;缺点:增加了无意义的标签) 3,父级定义伪类 after 和zoom(优点:浏览器支持好;缺点:代码多,两句代码结合使用 才能让主流浏览器都支持) 4, 父级定义 overflow:hidden (优点: 代码少, 简单, 浏览器支持好; 缺点: 必须定义 width 或者 zoom,同时不能定义 height,不能和 position 配合使用) 5,父级定义 overflow:auto(优点:代码少,简单,浏览器支持好;缺点:必须定义 width 或者 zoom,同时不能定义 height,内部元素高度超过父级会出现滚动条 还有,父级一起浮动,父级定义display:table,结尾加 br 的 clear:both 等 54.解释下 CSSsprites,以及你要如何在页面或网站中使用它? 是一种网页图片应用处理方式。 它允许你将一个页面涉及到的所有零星图片都包含到一张大 图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。页面 icon 很多的情况下使用合适。
39
55,html5 有哪些新特性、移除了那些元素?如何处理HTML5 新标签的浏览器兼容问 题?如何区分 HTML 和HTML5?? HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。绘画 canvas 用于媒介回放的 video 和 audio 元素本地离线存储 localStorage 长期存 储数据,浏览器关闭后数据不丢失;sessionStorage 的数据在浏览器关闭后自动删除 语意化更好的内容元素,比如article、footer、header、nav、section 表单控件,calendar、date、time、email、url、search 新的技术webworker, websockt, Geolocation 移除的元素 纯表现的元素:basefont,big,center,font, s,strike,tt,u; 对可用性产生负面影响的元素:frame,frameset,noframes;支持 HTML5 新标签: IE8/IE7/IE6 支持通过 document.createElement 方法产生的标签, 可以利用这一特性让这些浏览器支持 HTML5 新标签, 浏览器支持新标签后,还需要添加标签默认的样式: 当然最好的方式是直接使用成熟的框架、使用最多的是 html5shim 框架 如何区分: DOCTYPE 声明\新增的结构元素\功能元素56.javascript 的同源策略。 一段脚本只能读取来自于同一来源的窗口和文档的属性, 这里的同一来源指的是主机名、 协 议和端口号的组合
57、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字?否则的话提 示用户并终止提交?
点击隐藏
相关文档
2016-2017年九年级语文上册第四单元综合检测试题 (新版)新人教版人教新目标版江西省2016-2017学年八年级英语上学期第一次月考试题及答案人教新目标版安徽省2016-2017学年八年级英语上学期第一次月考试题及答案人教新目标版辽宁省2016-2017学年八年级英语上学期第一次月考试题及答案人教新目标版湖南省2016-2017学年八年级英语下学期第一次月考试题及答案2016最新版人教版小学二年级数学上册第四单元测试题2016新版一年级语文上册第三单元测试题2016新版小学一年级语文上册第二单元测试题及答案2016-2017学年第一学期新版PEP小学英语三年级上册期末试题及答案2016-2017年九年级语文上册第四单元综合测试题 (新版)新人教版最新JAVA编程题全集(50题及答案)Java就业面试题大全(精选)张孝祥Java就业面试题大全
m.racktom.com
共享资料网
电脑版
copyright ©right 2015-2020 共享资料网
error 0x006!请联系客服!