"这是一份针对Java程序员面试的综合题库,涵盖了基础语法、多线程、JSP、JavaScript、数据库操作、UML图、性能优化等多个方面,旨在帮助求职者准备面试。"
1. 访问修饰符:在Java中,`public`、`private`、`protected`以及默认访问权限有着不同的作用范围。`public`表示全局可访问,`private`限制在同一类内部访问,`protected`允许同包和子类访问,不写时表示同包内的访问权限。
2. 字符变量与中文字符:Java的`char`类型占用两个字节,理论上可以存储一个中文字符,因为中文字符通常需要两个字节来表示。
3. 多线程实现:Java中创建线程主要有两种方式,一是继承`Thread`类,二是实现`Runnable`接口。同步的实现方法有`synchronized`关键字、`wait()`、`notify()`、`notifyAll()`以及`Lock`接口和`Semaphore`等。
4. 抽象与接口:抽象类是具有抽象方法的类,可以包含非抽象方法和成员变量,而接口则仅包含抽象方法和常量。编程时,如果需要实现多继承,或者定义一组相关行为,通常选择接口;如果需要定义通用功能或部分实现,可以选择抽象类。
5. JSP内置对象:包括`request`、`response`、`session`、`application`、`pageContext`、`out`、`config`、`page`、`exception`等,它们提供了对HTTP请求、响应、会话、应用范围数据等的访问和操作。
6. `forward()`与`redirect()`:`forward()`是服务器端跳转,请求仍然在同一个请求范围内,而`redirect()`是客户端跳转,浏览器发起新的HTTP请求。
7. `final`, `finally`, `finalize`:`final`用于声明不可变的变量、类或方法;`finally`确保代码块无论是否发生异常都会执行;`finalize`是对象被垃圾回收前调用的方法,用于释放资源。
8. N层架构:通常包括表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)、实体层(Entity)等。MVC框架如Spring MVC、Struts、JSF等,将模型、视图、控制器分离,提高代码的可维护性。
9. JavaScript定时调用:可以使用`setInterval()`函数实现定时执行某函数。
10. 获取<select>值:通过`document.getElementById('selectId').options[selectedIndex].value`获取。
11. Java表达式:`a=10,b=20,c=10; alert(a=b)`将输出`true`,因为赋值运算符返回赋值后的值;`alert(a==b)`和`alert(a==c)`都输出`true`,因为`a`等于`b`也等于`c`。
12. SQL查询:`SELECT * FROM student WHERE name = '相同的名字'`可以查询名字相同的学生。
面试问题还涉及到数据库连接、重写(`override`)、斐波那契数列、页面间传递数据、表单数据获取、JavaBeans使用、事务管理、高性能SQL编写、UML图绘制、错误处理、挑战性项目的经历以及个人职业规划等,这些内容体现了面试者的技术深度和广度,以及问题解决和沟通能力。