首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >腾讯云智一面---后台开发(凉经)

腾讯云智一面---后台开发(凉经)

作者头像
用户11288958
发布2025-07-18 15:20:33
发布2025-07-18 15:20:33
9200
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

一、java的特性是什么?

封装、继承、多态

二、具体什么是封装、继承、多态(面向对象的角度,最好用项目中 / 生活中的例子),贯穿始终,看你能不能讲清楚)?再讲一下什么是抽象?(我举了汽车的例子

那我举一个汽车的例子

1. 封装(Encapsulation)

定义:将数据(属性)和操作数据的方法(行为)捆绑在一起,并隐藏内部实现细节,仅对外提供必要接口。 类比:汽车的发动机舱。

通俗解释

封装的话就是比如把发动机、变速箱藏在引擎盖下面,只留给用户几个简单的“按钮”

(方向盘、油门、刹车)

关键作用

  • 保护数据:用户不能直接修改发动机转速,只能通过油门间接控制。
  • 简化操作:用户不需要懂内燃机原理,踩油门就能加速。

代码示例

代码语言:javascript
代码运行次数:0
运行
复制
public class Car {
    private int speed; // 隐藏速度,不让外部直接修改
    
    // 提供公共方法控制速度
    public void pressAccelerator(int force) {
        if (force > 0) {
            speed += force;
            if (speed > 200) speed = 200; // 限速保护
        }
    }
    
    public int getSpeed() {
        return speed;
    }
}
2. 继承(Inheritance)

定义:子类(派生类)继承父类(基类)的属性和方法,实现代码复用和扩展。 类比:汽车的分类体系。

  • 父类Car(有speedstart()等通用属性和方法)。
  • 子类ElectricCarGasCar继承Car,并扩展各自特性。

通俗解释: 所有汽车(子类)都继承 “汽车” 这个大类的基本特性(轮子、方向盘),但可以添加自己的特色(如给汽车的充电功能)。

代码语言:javascript
代码运行次数:0
运行
复制
// 父类:普通汽车
public class Car {
    public void drive() {
        System.out.println("开车前进");
    }
}

// 子类:电动车
public class ElectricCar extends Car {
    public void charge() { // 新增充电功能
        System.out.println("新增充电功能");
    }
    
    @Override
    public void drive() { // 修改父类行为
        System.out.println("电动引擎安静地启动");
    }
}
3. 多态(Polymorphism)

定义:同一方法调用,根据对象类型不同表现出不同行为。 类比:汽车的喇叭。

  • 无论是什么品牌的汽车(奔驰、宝马、特斯拉),按喇叭时都发出 “哔~” 声,但具体音色可能不同。

关键点

  • 接口 / 抽象类:定义统一方法(如honk())。
  • 动态绑定:运行时根据实际对象类型决定调用哪个实现。
  • 可扩展性:新增车型(如BMW)时,无需修改honkAll()方法。

代码示例

代码语言:javascript
代码运行次数:0
运行
复制
// 接口:定义汽车的行为
public interface Car {
    void honk(); // 按喇叭方法
}

// 奔驰车
public class Benz implements Car {
    @Override
    public void honk() {
        System.out.println("优雅的:哔~");
    }
}

// 特斯拉
public class Tesla implements Car {
    @Override
    public void honk() {
        System.out.println("电子合成音:哔~");
    }
}

// 测试多态
public class Main {
    public static void main(String[] args) {
        Car benz = new Benz();
        Car tesla = new Tesla();
        
        honkAll(benz, tesla); // 统一调用按喇叭方法
    }
    
    public static void honkAll(Car... cars) {
        for (Car car : cars) {
            car.honk(); // 不同汽车的喇叭声自动区分
        }
    }
}
4. 抽象(Abstraction)

定义:忽略细节,提取共性,用抽象类或接口定义规范。 类比:汽车设计蓝图。

通俗解释: 汽车设计图只规定 “必须有四个轮子”“必须能启动”,但不规定具体用什么材料(钢轮还是铝轮)。

关键点

  • 抽象类 / 接口:不能实例化,仅作为规范(如Car不能直接new Car())。
  • 强制实现:抽象方法(如start())必须由子类实现。
  • 分离设计与实现:上层代码只依赖抽象(如Car接口),不依赖具体类。
代码语言:javascript
代码运行次数:0
运行
复制
// 抽象类:汽车设计蓝图
public abstract class Car {
    public abstract void start(); // 抽象方法:必须启动
    
    public void stop() { // 具体方法:默认实现
        System.out.println("踩刹车停车");
    }
}

// 燃油车实现
public class GasCar extends Car {
    @Override
    public void start() {
        System.out.println("点火启动燃油发动机");
    }
}

// 电动车实现
public class ElectricCar extends Car {
    @Override
    public void start() {
        System.out.println("按下启动按钮,电动引擎就绪");
    }
}

代码示例

代码语言:javascript
代码运行次数:0
运行
复制
// 抽象类:汽车设计蓝图
public abstract class Car {
    public abstract void start(); // 抽象方法:必须启动
    
    public void stop() { // 具体方法:默认实现
        System.out.println("踩刹车停车");
    }
}

// 燃油车实现
public class GasCar extends Car {
    @Override
    public void start() {
        System.out.println("点火启动燃油发动机");
    }
}

// 电动车实现
public class ElectricCar extends Car {
    @Override
    public void start() {
        System.out.println("按下启动按钮,电动引擎就绪");
    }
}
5. 接口(Interface)

官方定义: 接口是一种抽象类型,它只定义方法签名(名称、参数、返回值),但不包含方法体。实现接口的类必须实现接口中所有的方法。

汽车类比

  • 充电接口(如国标、特斯拉超充)就是一种物理接口,它规定:
    1. 必须有几个针脚(如直流正极、负极、通信线)。
    2. 每个针脚的功能和电压标准。
    3. 插头的形状和尺寸。
  • 不规定
    • 充电桩内部如何转换电能(用 IGBT 模块还是 SiC 模块)。
    • 具体用什么品牌的充电桩。

通俗解释: 汽车的 “充电接口”(如 Type-C、国标快充口),只要符合这个接口标准,任何充电桩都能充电。

关键作用

汽车场景中的作用

  1. 标准化:所有电动车和充电桩必须遵循同一接口标准(如国标),否则无法兼容。
  2. 解耦:车厂不用关心充电桩的实现,充电桩厂商也不用关心车的品牌。
  3. 扩展性:未来可以新增接口标准(如无线充电接口),而不影响现有系统。

3. 代码示例:汽车充电接口

代码语言:javascript
代码运行次数:0
运行
复制
// 充电接口(规定必须有充电方法)
public interface Chargeable {
    void charge();
}

// 特斯拉实现了充电接口
public class Tesla implements Chargeable {
    public void charge() {
        System.out.println("插入Type-C充电桩,开始充电");
    }
}

// 比亚迪也实现了充电接口
public class BYD implements Chargeable {
    public void charge() {
        System.out.println("插入国标充电桩,开始充电");
    }
}

总结对比 

三、面向对象 和 面向过程有什么区别?

四、for循环有多少中写法?(常见的写法,不包含迭代器)

五、for循环分成好几部分,讲它的每一部分和每一部分的作用。

六、数组,有五个元素【1,2,3,4,5】,如何通过for循环打印1  3  5 用for循环怎么写?

while循环打印 数组【1,2,3,4,5】怎么写?

七、多线程了解吗?举一个多线程的例子?什么情况下用多线程做事情?用多线程要注意什么问题?

八、比如说有两个线程、一个文件,一个线程要更新文件中的内容,另一个线程要读取里面的内容,这个时候代码的执行的循序是什么?,包括加锁、写文件、解锁这些顺序是什么?

九、线程之间,两个线程在并行做事情,那两个线程有时候也要进行一些通信,如何进行通信呢? 

十、private、protect、public 三种修饰符有什么区别?

十一、栈和队列有什么区别?举个生活中的例子?(讲清楚,讲完全) 

十二、二叉树什么是平衡二叉树?堆排序中堆是一种什么二叉树?

十三、你知道的排序算法有多少种?(说至少五种),选一种讲清楚?

十四、MySQL中有一张表,

A:学号 姓名  B:学号 性别

①连表查出来学号,姓名,性别 ?

②如果要清空一个表的数据用什么命令?

③更新某个学生的姓名,怎么更新?

④删一个表命令

十五、redis是一个什么样的数据库?和别的数据库比它的显著特征?

十六、redis一般作为缓存系统,因为读写速度比较快,那它的缺陷是什么?

十七、计算机网络分层结构,七层,从下往上是什么?

十八、linux关于目录和文件的基本命令?(说十个)

查文件中的某个词用什么命令?

只想查看前十行?

后十行?

十九、

①查看一个机器的 ip 地址,想连接一个机器,登录一个机器用什么命令?

②看当前到别的服务器网络通不通用什么命令?

③看他的端口号能不能连接上这个用什么命令?

二十、域名解析具体是做什么事情?可以举个例子吗?

二十一、前后端协作开发,后端写的接口文档内容有什么?

二十二、讲一下项目经历?每段控制在3分钟,两个都介绍一下

(项目背景、为什么做这个项目、有什么功能、项目的架构、是怎么设计这个项目的、这个项目过程中间,分模块设计,设计过程中有没有遇到什么问题,开发完了后是要测试,你具体怎么测的、有没有分场景、写用例,最后这个项目的背景亮点在哪,用到的核心技术)

二十三、事务的话和普通的SQL有什么区别?

二十四、k8s 和 docker容器听说过吗? docker部署几步就能把mysql数据库部署起来? 

二十五、docker中容器运行期间,你有没有看过容器的日志?

二十六、docker的网络你知道吗,网桥的名字叫什么,docker0你知道吗

有没有听过容器的主机网络模式?

二十七、有没有了解过什么是云,腾讯云嘛,云包含几层?有没有听过 IaaS、PaaS、SaaS?CI/CD?

加解锁的一个线程: 只读锁(共享的):多个读线程可以同时读取文件。 若一个读的线程先获取到资源,那么就要加一个只读锁、 在只读锁没有被释放的时候,别的线程就不能去更新(写)这个文件。 如果A线程把这个文件读完了,这个时候就可以把锁给释放掉。  就是说这个文件我不用了, 写锁(排他的):同一时间只允许一个线程写入,且写入时不允许其他线程读取。 解锁之后更新的线程可以获取一把写锁 他告诉别人我正在写,你们看着读,写完之后他把锁一解。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、java的特性是什么?
  • 二、具体什么是封装、继承、多态(面向对象的角度,最好用项目中 / 生活中的例子),贯穿始终,看你能不能讲清楚)?再讲一下什么是抽象?(我举了汽车的例子
    • 1. 封装(Encapsulation)
    • 2. 继承(Inheritance)
    • 3. 多态(Polymorphism)
    • 4. 抽象(Abstraction)
    • 5. 接口(Interface)
    • 总结对比 
  • 三、面向对象 和 面向过程有什么区别?
  • 四、for循环有多少中写法?(常见的写法,不包含迭代器)
  • 五、for循环分成好几部分,讲它的每一部分和每一部分的作用。
  • 六、数组,有五个元素【1,2,3,4,5】,如何通过for循环打印1  3  5 用for循环怎么写?
  • while循环打印 数组【1,2,3,4,5】怎么写?
  • 七、多线程了解吗?举一个多线程的例子?什么情况下用多线程做事情?用多线程要注意什么问题?
  • 八、比如说有两个线程、一个文件,一个线程要更新文件中的内容,另一个线程要读取里面的内容,这个时候代码的执行的循序是什么?,包括加锁、写文件、解锁这些顺序是什么?
  • 九、线程之间,两个线程在并行做事情,那两个线程有时候也要进行一些通信,如何进行通信呢? 
  • 十、private、protect、public 三种修饰符有什么区别?
  • 十一、栈和队列有什么区别?举个生活中的例子?(讲清楚,讲完全) 
  • 十二、二叉树什么是平衡二叉树?堆排序中堆是一种什么二叉树?
  • 十三、你知道的排序算法有多少种?(说至少五种),选一种讲清楚?
  • 十四、MySQL中有一张表,
  • A:学号 姓名  B:学号 性别
  • ①连表查出来学号,姓名,性别 ?
  • ②如果要清空一个表的数据用什么命令?
  • ③更新某个学生的姓名,怎么更新?
  • ④删一个表命令
  • 十五、redis是一个什么样的数据库?和别的数据库比它的显著特征?
  • 十六、redis一般作为缓存系统,因为读写速度比较快,那它的缺陷是什么?
  • 十七、计算机网络分层结构,七层,从下往上是什么?
  • 十八、linux关于目录和文件的基本命令?(说十个)
  • 查文件中的某个词用什么命令?
  • 只想查看前十行?
  • 后十行?
  • 十九、
  • ①查看一个机器的 ip 地址,想连接一个机器,登录一个机器用什么命令?
  • ②看当前到别的服务器网络通不通用什么命令?
  • ③看他的端口号能不能连接上这个用什么命令?
  • 二十、域名解析具体是做什么事情?可以举个例子吗?
  • 二十一、前后端协作开发,后端写的接口文档内容有什么?
  • 二十二、讲一下项目经历?每段控制在3分钟,两个都介绍一下
  • (项目背景、为什么做这个项目、有什么功能、项目的架构、是怎么设计这个项目的、这个项目过程中间,分模块设计,设计过程中有没有遇到什么问题,开发完了后是要测试,你具体怎么测的、有没有分场景、写用例,最后这个项目的背景亮点在哪,用到的核心技术)
  • 二十三、事务的话和普通的SQL有什么区别?
  • 二十四、k8s 和 docker容器听说过吗? docker部署几步就能把mysql数据库部署起来? 
  • 二十五、docker中容器运行期间,你有没有看过容器的日志?
  • 二十六、docker的网络你知道吗,网桥的名字叫什么,docker0你知道吗
  • 有没有听过容器的主机网络模式?
  • 二十七、有没有了解过什么是云,腾讯云嘛,云包含几层?有没有听过 IaaS、PaaS、SaaS?CI/CD?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档