JAVA面试题最全集,JAVA面试题最全集
### Java基础知识 #### 1. Java的基本数据类型与String类型的区别 Java中有八种基本数据类型,分为两类:整数类型(byte、short、int、long)和浮点类型(float、double),此外还包括布尔类型(boolean)和字符类型(char)。而`String`不是基本数据类型,它是Java中的一个类,用来表示文本字符串。 - **基本数据类型**:存储在栈中,内存分配给每个变量。例如,`int`类型的变量占用4个字节。 - **String**:对象存储在堆中,可以通过字符串常量池来共享相同的字符串对象,提高性能。`String`对象一旦创建后不可改变,因此是不可变的对象。 #### 2. 字符串操作 - **字符串反转**:可以通过遍历字符串并反向构建新字符串来实现。 ```java public static String reverse(String s) { StringBuilder sb = new StringBuilder(s); return sb.reverse().toString(); } ``` - **字符串替换**:可以使用`String`类提供的`replace()`方法或正则表达式。 ```java public static String replaceAll(String s, char oldChar, char newChar) { return s.replace(oldChar, newChar); } ``` #### 3. 数据类型之间的转换 - **字符转数字**:可以使用`Character`类的方法或者`Integer.parseInt()`方法。 ```java int num = Character.getNumericValue('5'); // 数字字符转int int num2 = Integer.parseInt("123"); // 字符串转int ``` - **数字转字符**:通过`Integer.toString()`方法。 ```java char c = (char) 65; // ASCII码转字符 String str = Integer.toString(123); // int转字符串 ``` - **取小数点前两位并四舍五入**:可以使用`Math.round()`结合`BigDecimal`。 ```java double d = Math.round(3.14159 * 100.0) / 100.0; BigDecimal bd = new BigDecimal("3.14159").setScale(2, RoundingMode.HALF_UP); ``` #### 4. 日期和时间 - **获取年月日、小时分秒**:使用`LocalDateTime`类。 ```java LocalDateTime now = LocalDateTime.now(); int year = now.getYear(); int month = now.getMonthValue(); int day = now.getDayOfMonth(); int hour = now.getHour(); int minute = now.getMinute(); int second = now.getSecond(); ``` - **获取从1970年到现在的毫秒数**:使用`System.currentTimeMillis()`。 ```java long currentTimeMillis = System.currentTimeMillis(); ``` - **获取某日期是否为当月最后一天**:使用`MonthDay`类。 ```java boolean isLastDayOfMonth = MonthDay.from(now).equals(MonthDay.of(now.getMonth(), now.getMonth().length(now.isLeapYear()))); ``` - **格式化日期**:使用`DateTimeFormatter`。 ```java DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formatted = now.format(formatter); ``` #### 5. 数组和集合 - 数组:固定大小,类型单一。 - 集合:动态大小,类型可变,如`List`、`Set`和`Map`。 #### 6. 文件和目录(I/O)操作 - **列出某个目录下的所有文件**:使用`Files`类。 ```java Path dir = Paths.get("/path/to/directory"); Files.list(dir).forEach(System.out::println); ``` - **读写文件**:使用`BufferedReader`和`BufferedWriter`。 ```java try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) { String line; while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } ``` #### 7. Java多态的实现 - **继承**:子类继承父类。 - **重载**:同一个类中的多个方法具有相同的名字但参数不同。 - **覆盖**:子类重新定义父类中的方法。 #### 8. 编码转换 - 使用`String`类的`getBytes()`方法和`new String()`构造函数进行转换。 ```java byte[] bytes = "你好".getBytes("GB2312"); String str = new String(bytes, "ISO-8859-1"); ``` #### 9. Java中访问数据库 - 使用`JDBC`连接数据库,`PreparedStatement`相比`Statement`提供了预编译的功能,能有效防止SQL注入攻击。 ### JSP&Servlet技术 #### 1. JSP与Servlet的区别 - **JSP**:主要用于网页展示,能够自动转换成Servlet执行。 - **Servlet**:主要负责业务逻辑处理。 #### 2. 在Web开发中处理HTML标记 - 对于`<`, `>`, `&`, `"`, `'`等特殊字符,应该使用相应的HTML实体进行转义。 #### 3. JSP中读取客户端请求 - 使用`HttpServletRequest`类。 ```java String param = request.getParameter("name"); ``` #### 4. Cookie与Session - **Cookie**:存储在客户端的少量数据。 - **Session**:服务器端保存的数据结构,用于跟踪用户的状态。 #### 5. Jsp中包含外部文件的方式 - 使用`include`指令或`<jsp:include>`标签。 #### 6. errorPage的作用 - 指定当出现异常时转向的页面。 #### 7. 在Jsp中使用JavaBeans - 使用`<jsp:useBean>`标签声明一个JavaBean实例。 #### 8. JSP标记库 - 提供了封装好的功能,如`<c:out>`等。 #### 9. 请求转发 - 使用`RequestDispatcher`接口。 ### J2EE相关知识 #### 1. J2EE、J2SE、J2ME的区别 - **J2EE**:企业级应用开发。 - **J2SE**:标准版,适用于桌面应用开发。 - **J2ME**:移动设备应用开发。 #### 2. ApplicationServer的功能和优点 - 功能:提供容器环境支持EJB等企业级组件。 - 优点:提高应用的可伸缩性和可靠性。 #### 3. 连接池 - **优点**:减少连接创建和销毁的开销。 - **原理**:预先创建一定数量的连接放在池中供应用程序使用。 #### 4. Web.xml的作用 - 定义web应用的配置信息,如servlet映射等。 ### 其他知识点 #### 1. Web安全性考虑 - **表单验证**:客户端和服务器端双重验证。 - **SSL**:加密传输数据,保护数据安全。 #### 2. MVC - Model-View-Controller架构模式,分离模型、视图和控制器。 #### 3. XML - 可扩展标记语言,用于数据交换和存储。 #### 4. 分页 - 限制查询结果的数量,提高查询效率。 #### 5. Struts - 基于MVC模式的Web框架。 #### 6. EJB - 企业级Java Bean,包括Session Bean和Entity Bean。 #### 7. 多线程 - Java中的多线程机制,提高程序的并发执行能力。 #### 8. 文件加密技术 - 使用加密算法保护文件的安全性。 #### 9. 软件开发生命周期 - 包括需求分析、设计、编码、测试和维护等阶段。 #### 10. 路由协议 - 包括静态路由、RIP、OSPF等。 #### 11. AWT与Swing - GUI设计的关键在于布局管理器的选择和组件的使用。 #### 12. Java流 - 输入输出流是Java I/O系统的基础。 #### 13. AWT与Swing的区别 - AWT依赖于本地平台,Swing则是纯Java的轻量级组件。 #### 14. 事件处理模式 - 基于监听器的设计模式,用于响应用户事件。 #### 15. Applet的安全权限 - Applet运行在一个沙箱环境中,限制其访问本地资源。 #### 16. 逻辑操作与条件操作的区别 - 逻辑操作符(`&`, `|`)和条件操作符(`&&`, `||`)的主要区别在于短路行为。 #### 17. JSP与Servlet的联系与区别 - JSP最终会被编译成Servlet执行,但在用途上有区别。 #### 18. synchronized与Lock的异同 - `synchronized`是内置锁机制,`Lock`是可选锁机制,更灵活。 #### 19. EJB中禁止的操作 - 如直接使用循环、抛出受检异常等。 #### 20. Java虚拟机中的非基本类型 - 引用类型,如对象、数组等。 #### 21. 创建对象的其他方式 - 构造器、反射、克隆等。
- 粉丝: 3
- 资源: 68
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于扩散概率分布的时序知识图谱推理《华中师范大学-周有光》
- 001.HC04蓝牙串口的配置及使用
- Comsol多孔介质内的粒子流动案例,可以追踪粒子运动轨迹
- FocusAny 智能工具Win版 0.2.0
- 游戏人物检测24-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 2021年全球疾病负担研究(GBD)全因死亡率.zip
- 基于MATLAB的轴承故障检测系统,代码加详细的说明书,以及操作步骤,设计方案,参考意义巨大
- 基于vue+python开发的全网热搜排行榜榜单,支持微博热搜、知乎热榜、抖音热点、百度热搜、搜狗热榜(源码)
- 2021年全球疾病负担研究(GBD)社会人口指数.zip
- 老版本CAD版本转换,不需要安装cad
- 三菱旋切飞剪,用的是运动控制器Q172DSCPU做的飞剪控制,凸轮曲线的由来是分析计算出来的 其中文件是一个程序+一个文档说明
- 1_海绵宝宝多js七页.zip
- 游戏人物检测25-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- PMSM滑模控制仿真无位置 永磁电机 可提供文档if启动 如果没有收敛,将1e-4搞小一点 e-6或者e-5试下 本次滑模模型文档包括: 1 simulink界面调整,由于使用这个仿真的时候很可能
- 基于 OpenMV 和 STM32 的 循迹小车详细文档+全部资料+高分项目.zip
- 基于esp8266和stm32的ov2640网络摄像头详细文档+全部资料+高分项目.zip