百度2019面试题集:Java基础与框架知识点

需积分: 10 0 下载量 181 浏览量 更新于2024-07-17 收藏 58KB DOCX 举报
在百度2019年的面试题库中,涵盖了多种技术领域的考察内容,旨在测试应聘者的综合能力和对IT行业的深入理解。以下是部分题目及其知识点的详细解析: 1. **操作系统中的堆和栈**: - 堆(Heap):内存中动态分配的区域,主要用于存储对象实例,大小不固定,由垃圾回收器管理。 - 栈(Stack):用于存储局部变量和函数调用时的信息,具有先进后出(LIFO)特性,执行完函数后自动释放。 2. **基于注解的切面编程**: - 注解(Annotation):在Java中用于元数据标记,可自定义附加在代码上的信息,用于实现切面编程如Spring AOP中的声明式事务管理。 3. **对象/关系映射(ORM)**: - ORM是将对象模型和关系数据库之间的映射技术,如Hibernate等,简化了数据持久化的处理,使得代码更易于理解和维护。 4. **Java反射机制**: - 反射API允许程序在运行时检查类的信息、创建实例、获取成员变量和方法,增强了程序的灵活性和动态性。 5. **ACID属性**: - ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)的缩写,是数据库事务处理的基本特性,确保数据操作的一致性和完整性。 6. **BS与CS的区别**: - BS(Browser Server)结构,客户端浏览器处理大部分交互,服务器负责数据处理和传输。 - CS(Client-Server)结构,客户端和服务器紧密耦合,所有处理都在服务器端完成。 7. **Cookie和Session的区别**: - Cookie通常用于持久存储少量用户信息,客户端浏览器发送;Session在服务器端存储,通过session ID关联,安全性更高但需要服务器支持。 8. **fail-fast与fail-safe机制**: - fail-fast强调尽早发现错误,一旦检测到问题就停止操作;fail-safe则继续执行直到遇到问题才终止,保证尽可能多的操作完成。 9. **HTTP方法的区别(GET vs POST)**: - GET:用于请求数据,参数显示在URL中,幂等性,不适合大量数据传递。 - POST:用于提交数据,数据隐藏在请求体中,可用于更新或创建资源,非幂等。 10. **接口(Interface)与抽象类(Abstract Class)**: - 接口定义行为规范,多继承,无实现;抽象类可以提供默认实现,仅单继承。 11. **IoC(依赖注入)与DI(依赖注入)的优点**: - IoC/DI简化了组件之间的依赖关系管理,提高代码的可测试性和可扩展性。 12. **IO与NIO的区别以及NIO的优点**: - IO是阻塞的,进程间通信;NIO是非阻塞的,引入Channel和Buffer,提高性能和并发处理能力。 13. **Java 8/Java 7新功能**: - Java 8新增Stream API、Lambda表达式、日期/时间API等;Java 7主要是性能优化和JVM改进。 14. **竞态条件(Race Condition)**: - 并发编程中,两个或多个线程访问共享资源,因执行顺序不确定可能导致的结果不一致。 15. **JRE、JDK、JVM及JIT的区别**: - JRE(Java Runtime Environment)包括JVM和核心库; - JDK(Java Development Kit)包含JRE及开发工具; - JVM(Java Virtual Machine)负责执行字节码; - JIT(Just-In-Time Compiler)是JVM的一部分,动态编译代码提高性能。 16. **MVC架构实现技术**: - MVC(Model-View-Controller):模型处理业务逻辑,视图负责展示,控制器协调两者。 17. **RPC通信与RMI的区别**: - RPC(Remote Procedure Call)是一种远程调用技术,如Hessian、Thrift等;RMI是Java的RPC实现,基于Java对象序列化。 18. **WebService与Web服务标准(SOAP、UDDI、WSDL)**: - WebService是网络服务的一种,通过标准协议(SOAP)进行交互; - SOAP(Simple Object Access Protocol)用于消息交换; - UDDI(Universal Description Discovery and Integration)用于注册和查找Web服务; - WSDL(Web Services Description Language)描述服务接口和操作。 19. **WEB容器功能及常见容器**: - 容器负责处理HTTP请求,管理应用上下文,如Tomcat、Jetty、WebLogic等。 20. **Java源文件的类定义**: - 可以包含一个或多个公共类,但每个类必须独立,不能相互嵌套定义。 21. **AOP(面向切面编程)**: - 在不修改原有代码的基础上,通过预编译方式和运行期动态代理实现程序的增强功能。 22. **Servlet生命周期及方法**: - Servlet有初始化、服务请求、销毁等阶段,涉及的方法如init()、service()、destroy()等。 23. **Ajax原理与实现步骤**: - Ajax异步加载数据,无需刷新页面;涉及的技术包括JavaScript、XMLHttpRequest等。 24. **Struts框架功能**: - Struts是一个基于MVC的Web应用开发框架,简化了Web开发流程,提供Action、Servlet等组件。 25. **N层架构**: - N层架构(如MVC、DAO、BLL、WEB层)将应用程序划分为多个逻辑层,提高代码组织和可维护性。 26. **CORBA(Common Object Request Broker Architecture)**: - 面向对象的分布式计算中间件,提供远程过程调用和对象定位服务。 27. **Java虚拟机(JVM)**: - Java的运行环境,负责执行字节码,提供了垃圾回收机制和跨平台兼容性。 28. **正则表达式**: - 用于文本字符串匹配和搜索的强大工具,Pattern和Matcher类实现。 29. **懒加载(LazyLoading)**: - 避免在加载对象时立即占用过多资源,只有在实际使用时才加载对象的部分属性。 30. **尾递归与控制反转(IoC)和依赖注入(DI)**: - 尾递归是函数调用自身且没有剩余操作,可以优化为循环,避免栈溢出; - 控制反转和依赖注入是设计模式,前者是程序依赖于外部的配置,后者则是通过依赖注入框架动态注入依赖。 关键词解析: - `finalize`:Java对象的析构函数,在垃圾回收前执行,清理资源。 - `final`:修饰符,常量、类、方法或变量,表示不可变或终结状态。 - `finalize()`:Java对象的清理方法,不一定被执行,主要用于资源清理。 - `构造函数(initialization)`:对象创建时自动执行,初始化成员变量。 - `final、finally、finalize`:三个词在Java中各有特定用途,final用于对象属性,finally用于异常处理,finalize用于对象销毁。