2024秋招and春招-面试基础(1).docx
根据提供的文档信息,本文将详细解析其中提及的关键IT知识点,主要围绕Java基础知识展开,包括static的作用、final的应用、接口与抽象类的区别、线程管理等内容。 ### 1. Java基础 #### Static的作用 - **修饰函数的局部变量**:当static用于函数内部时,它修饰的变量称为静态局部变量。这类变量具有以下特性: - 默认值为0。 - 在程序运行时仅初始化一次,之后即使函数多次被调用,该变量也只保留最后一次的值。 - 内存分配发生在程序运行开始阶段,并且存储于全局数据区。 - **修饰全局函数和全局变量**:static用于修饰全局函数或全局变量时,这些元素只能在其所在的源文件中访问。 - **修饰类里面的成员变量**:用于类内部的成员变量时,static修饰的变量被称为类变量。它具备以下特征: - 与局部静态变量相似,具有默认值,但不同之处在于它在整个类生命周期中只有一份副本。 - 不随类对象的创建而创建,即不依赖于类实例的存在。 - 可以通过类名直接访问。 - **修饰类的成员函数**:此类函数不依赖于对象,可以通过类名直接调用。 #### Final的作用 - **修饰方法**:使得方法不可被子类覆盖。 - **修饰成员变量**:使变量成为常量,一旦赋值后无法更改。 - **修饰参数**:可以防止方法内部改变传递进来的参数的值,但不能阻止对参数所引用的对象的修改。 #### 接口与抽象类的区别 - **抽象类**:用于捕捉子类的共性,可以包含构造器、方法体、抽象方法等,作为继承的基类。 - **接口**:纯粹是抽象方法的集合,可以被多个类实现,用于定义行为标准而非具体实现。 - **关键字区别**:子类通过`extends`继承抽象类,通过`implements`实现接口。 ### 2. 线程管理 #### 线程实现方式 - **继承Thread类**:重写`run`方法,每次创建子类对象并调用`start`方法启动线程。 - **实现Runnable接口**:同样重写`run`方法,只需创建一个实现类对象即可供多个线程共享。 - **实现Callable接口**:相比Runnable增加了返回值功能,通过Future获取结果。 #### 线程池的作用 - **资源复用**:避免频繁创建销毁线程的开销。 - **控制最大并发数**:限制系统内同时运行的线程数量,防止资源耗尽。 - **提供定时和周期性执行功能**:如`ScheduledThreadPoolExecutor`。 #### 锁机制 - **公平锁/非公平锁**:公平锁保证请求按顺序获取锁,非公平锁则可能让后来者抢先。 - **可重入锁**:允许持有锁的线程再次获取同一把锁。 - **独享锁/共享锁**:独享锁不允许其他线程访问锁定资源,共享锁允许多个线程同时访问。 - **互斥锁/读写锁**:互斥锁一次只允许一个线程访问资源,读写锁允许多个读取线程或单个写入线程访问。 - **乐观锁/悲观锁**:乐观锁假定冲突少,先执行再验证;悲观锁假设冲突多,先加锁再执行。 - **分段锁/偏向锁/轻量级锁/重量级锁**:针对不同的场景优化锁性能。 - **自旋锁**:在等待锁释放时不放弃处理器时间片,而是持续尝试获取锁。 #### 常用线程池类型 - **newCachedThreadPool**:适合处理大量的短期异步任务。 - **newFixedThreadPool**:固定线程数量,适用于处理固定数量的任务。 - **newSingleThreadExecutor**:单线程执行模型,确保任务顺序执行。 - **newScheduledThreadPool**:支持定时任务和周期性任务。 #### 线程停止 - **Thread.stop()方法**:已弃用,不推荐使用。 - **interrupt()方法**:设置中断标志位,通常配合条件判断使用来实现线程的优雅退出。 #### 运行线程 - **启动线程**:通过`start`方法启动线程,JVM会调用该线程的`run`方法。 - **线程安全**:利用`synchronized`关键字或显式锁(如`ReentrantLock`)来实现。 #### 并发三要素 - **原子性**:确保一系列操作要么全部完成,要么全部不做。 - **可见性**:保证多线程环境下变量更新后的可见性。 - **有序性**:保持程序执行顺序的一致性。 Java的基础知识对于软件开发工程师来说至关重要,特别是关于线程管理和并发编程的理解,这不仅能够提高程序的执行效率,还能有效避免常见的多线程问题。
剩余7页未读,继续阅读
- 粉丝: 1w+
- 资源: 2582
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 学校课程软件工程常见10道题目以及答案demo
- javaweb新手开发中常见的目录结构讲解
- 新手小白的git使用的手册入门学习demo
- 基于Java观察者模式的info-express多对多广播通信框架设计源码
- 利用python爬取豆瓣电影评分简单案例demo
- 机器人开发中常见的几道问题以及答案demo
- 基于SpringBoot和layuimini的简洁美观后台权限管理系统设计源码
- 实验报告五六代码.zip
- hdw-dubbo-ui基于vue、element-ui构建开发,实现后台管理前端功能.zip
- (Grafana + Zabbix + ASP.NET Core 2.1 + ECharts + Dapper + Swagger + layuiAdmin)基于角色授权的权限体系.zip