Java面试必备知识点:从JUnit到分布式锁,涵盖线程、Spring、数据库等

需积分: 10 1 下载量 194 浏览量 更新于2024-09-03 收藏 465KB PDF 举报
"这是一份来自一线互联网企业的面试题集,涵盖了Java编程、并发处理、分布式系统、网络、Web服务器、框架配置等多个方面的知识。这份资料对于准备面试或提升技术能力的人士非常有价值。" 这份PDF文件包含了多个面试题,涉及了Java开发中的核心概念和技术。以下是这些题目所涵盖的知识点的详细解释: 1. JUnit用法:JUnit是一个Java单元测试框架,`@Before`, `@BeforeClass`, `@After`, `@AfterClass` 分别代表在每个测试方法前、所有测试方法前、每个测试方法后和所有测试方法后的执行逻辑。 2. 分布式锁:在分布式系统中,用于解决多节点共享资源访问的并发控制问题,如Redis、ZooKeeper等可以提供分布式锁实现。 3. Nginx请求转发算法:Nginx支持负载均衡策略,如轮询、权重轮询等,可以根据配置将请求按权重转发到不同的后端服务器。 4. HashMap与ConcurrentHashMap:HashMap在多线程环境下可能导致死锁或死循环,而ConcurrentHashMap是线程安全的,更适合并发环境。 5. 线程状态:Java中线程有新建、就绪、运行、阻塞、等待、超时等待和终止七种状态。 6. 线程阻塞:通过wait()、join()、sleep()等方式可以使线程进入阻塞状态。 7. sleep()与wait()的区别:sleep()是Thread类的方法,使当前线程暂停指定时间;wait()是Object类的方法,让线程等待,直到其他线程唤醒它。 8. HashMap底层实现:HashMap基于数组+链表/红黑树的数据结构,使用哈希算法快速定位元素。 9. Java内存模型与垃圾回收机制:Java内存分为堆、栈、方法区等区域,垃圾回收主要基于可达性分析算法进行。 10. Integer引用交换:基本类型的包装类对象在栈中,引用交换不会改变原始变量值。 11. AOP的底层实现:Spring的AOP基于动态代理,可以为接口或类生成代理对象,实现方法拦截。 12. Maven命令:`mvn install`用于构建并安装项目到本地仓库,`mvn test`执行测试,Git则是一个版本控制系统。 13. Tomcat配置:包括服务器端口、应用上下文路径、虚拟主机等。 14. Spring的bean配置:XML、注解和Java配置三种方式。 15. web.xml配置:Web应用的部署描述符,用于配置Servlet、过滤器、监听器等。 16. Spring监听器:Spring提供了多种事件监听器,如ApplicationListener,用于监听和响应Spring容器的事件。 17. ZooKeeper实现机制:ZooKeeper是一个分布式协调服务,采用ZAB协议,提供注册服务、分布式锁等功能。 18. IO阻塞:Java的IO操作通常是阻塞的,如readLine()会等待输入数据。 19. 线程池选择:Java的ExecutorService和Spring的ThreadPoolTaskExecutor等提供线程池服务。 20-21. 字符串格式化与时间格式化:使用`String.format()`和`SimpleDateFormat`等工具处理。 22. 定时器:Java的Timer类或ScheduledExecutorService实现定时任务。 23. 线程退出:通常通过设置中断标志、抛出异常或调用`Thread.stop()`(不推荐)来结束线程。 24. Java锁机制:包括乐观锁、悲观锁、synchronized、可重入锁、读写锁等,ReentrantLock是可重入的互斥锁,比synchronized更灵活。 25. ThreadLocal:用于在线程局部变量中存储数据,避免全局变量带来的问题。 26. Java内存模型与垃圾回收:JVM内存分为堆、栈、方法区、本地方法栈等,垃圾回收机制包括标记-清除、复制、标记-压缩、分代等策略。 27. start()与run():start()创建新线程并执行run(),直接调用run()仅作为普通方法执行。 28. QMQ实现机制:QMQ是去哪儿网自研的消息队列,提供消息的发布/订阅功能。 29. HashMap遍历:迭代器、键集合、键值对集合三种方式。 30. JVM命令:如jps、jstat、jmap、jhat等用于监控和分析JVM状态。 31. Memcached与Redis区别:Memcached是简单的键值存储,适合小数据量高速缓存;Redis提供更丰富的数据结构和持久化选项。 32. MySQL行级锁:行级锁在InnoDB存储引擎中实现,锁定具体行,减少锁定范围,提高并发性能。 33. ConcurrentHashMap锁机制:采用分段锁,提高并发性能,但过多分段可能增加锁竞争。 34. MySQL行级锁的加锁位置:行级锁是在查询的WHERE条件中确定具体行。 以上知识点覆盖了Java基础、并发编程、网络、数据库、框架等方面,对于准备互联网企业面试或提升技术能力有着重要的参考价值。