面试问题知识

server/2025/2/2 19:00:22/

文章目录

  • 1. Linux 和 CentOS
    • 基础指令:
    • VMware 和 CentOS:
    • 扩充问题:
  • 2. 前端开发(JS、CSS)
    • JavaScript:
    • CSS:
    • 扩充问题:
  • 3. 数据库(MySQL)
    • 基础语法:
    • 事务和锁:
    • 扩充问题:
  • 4. 算法与数据结构
    • 排序算法:
    • 数据结构:
    • 扩充问题:
  • 5. Java 和面向对象编程
    • Java 基础:
    • 面向对象:
    • 扩充问题:
  • 6. 设计模式和设计原则
    • 设计模式:
    • 设计原则:
    • 扩充问题:
  • 7. Maven 和 Git
    • Maven:
    • Git:
    • 扩充问题:
  • 8. 微信小程序和云开发
    • 小程序开发:
    • 云开发:
    • 扩充问题:
  • 总结

以下是针对上述问题的详细解答,并扩充了一些相关的面试问题,帮助你更全面地准备面试


面试自用 日期:2025-2-1

1. Linux 和 CentOS

基础指令:

  • 查看当前目录下的所有文件(包括隐藏文件)
    ls -a
    
  • 查找一个文件并删除它
    find /path/to/dir -name "filename" -exec rm {} \;
    
  • 查看系统的 CPU 和内存使用情况
    top
    
  • 修改文件的权限
    chmod 755 filename
    
    • 755 表示:所有者有读、写、执行权限(7),组用户和其他用户有读和执行权限(5)。

VMware 和 CentOS:

  • 安装 CentOS 的步骤
    1. 在 VMware 中创建一个新的虚拟机。
    2. 选择 CentOS 的 ISO 文件作为安装介质。
    3. 配置虚拟机的硬件(内存、硬盘等)。
    4. 启动虚拟机并按照安装向导完成 CentOS 的安装。
  • 配置 CentOS 的网络连接
    • 编辑网络配置文件:
      vi /etc/sysconfig/network-scripts/ifcfg-eth0
      
    • 设置 ONBOOT=yesBOOTPROTO=dhcp,然后重启网络服务:
      systemctl restart network
      
  • 安装软件包
    yum install package_name
    

扩充问题:

  • 如何查看 Linux 系统的版本?
    cat /etc/redhat-release
    
  • 如何查看当前系统的进程?
    ps aux
    

2. 前端开发(JS、CSS)

JavaScript:

  • 闭包
    • 闭包是指函数可以访问其词法作用域中的变量,即使函数在其词法作用域之外执行。
    • 示例:
      function outer() {let x = 10;return function inner() {console.log(x);};
      }
      const closure = outer();
      closure(); // 输出 10
      
  • AJAX 请求
    const xhr = new XMLHttpRequest();
    xhr.open("GET", "https://api.example.com/data", true);
    xhr.onload = function() {if (xhr.status === 200) {console.log(xhr.responseText);}
    };
    xhr.send();
    
  • 事件冒泡和事件捕获
    • 事件冒泡:事件从目标元素向上传播到根元素。
    • 事件捕获:事件从根元素向下传播到目标元素。
  • Promise
    const promise = new Promise((resolve, reject) => {setTimeout(() => resolve("成功"), 1000);
    });
    promise.then(result => console.log(result));
    

CSS:

  • 垂直居中
    .container {display: flex;justify-content: center;align-items: center;
    }
    
  • Flexbox 和 Grid
    • Flexbox 适用于一维布局(行或列)。
    • Grid 适用于二维布局(行和列)。
  • 响应式设计
    @media (max-width: 768px) {.container {flex-direction: column;}
    }
    

扩充问题:

  • 如何实现一个模态框(Modal)?
  • 如何优化 CSS 性能?
    • 减少嵌套层级,避免使用通配符选择器,使用 transformopacity 进行动画优化。

3. 数据库(MySQL)

基础语法:

  • 创建带外键的表
    CREATE TABLE orders (order_id INT PRIMARY KEY,user_id INT,FOREIGN KEY (user_id) REFERENCES users(user_id)
    );
    
  • 内连接查询
    SELECT * FROM users INNER JOIN orders ON users.user_id = orders.user_id;
    
  • 优化慢查询
    • 使用索引,避免全表扫描。
    • 优化 SQL 语句,减少子查询。

事务和锁:

  • ACID 特性
    • 原子性(Atomicity):事务要么全部完成,要么全部不完成。
    • 一致性(Consistency):事务前后数据库的状态保持一致。
    • 隔离性(Isolation):事务之间相互隔离。
    • 持久性(Durability):事务完成后,数据永久保存。
  • 隔离级别
    • MySQL 默认隔离级别是 可重复读(Repeatable Read)
  • 死锁
    • 死锁是指两个或多个事务相互等待对方释放资源。
    • 避免方法:合理设计事务顺序,设置超时机制。

扩充问题:

  • 如何查看 MySQL 的执行计划?
    EXPLAIN SELECT * FROM users;
    
  • 什么是覆盖索引?它有什么优点?
    • 覆盖索引是指查询的所有字段都在索引中,无需回表查询。

4. 算法与数据结构

排序算法:

  • 快速排序
    • 时间复杂度:平均 O(n log n),最坏 O(n²)。
    • 实现原理:选择一个基准元素,将数组分为两部分,递归排序。
  • 二分查找
    • 前提条件:数组必须有序。
    • 时间复杂度:O(log n)。

数据结构:

  • 数组和链表
    • 数组:内存连续,支持随机访问,插入删除效率低。
    • 链表:内存不连续,插入删除效率高,访问效率低。
  • 栈和队列
    • 栈:后进先出(LIFO)。
    • 队列:先进先出(FIFO)。

扩充问题:

  • 如何判断一个链表是否有环?
    • 使用快慢指针(Floyd 判圈算法)。
  • 如何实现一个 LRU 缓存?
    • 使用哈希表 + 双向链表。

5. Java 和面向对象编程

Java 基础:

  • final 关键字
    • 修饰类:类不能被继承。
    • 修饰方法:方法不能被重写。
    • 修饰变量:变量不能被重新赋值。
  • 垃圾回收机制
    • Java 通过垃圾回收器自动回收不再使用的对象。
  • StringStringBuilderStringBuffer
    • String 是不可变的,StringBuilderStringBuffer 是可变的。
    • StringBuffer 是线程安全的,StringBuilder 不是。

面向对象:

  • 多态
    • 通过继承和接口实现,同一个方法在不同类中有不同的实现。
  • 抽象类和接口
    • 抽象类可以有方法实现,接口只能有方法声明。
  • 单例模式
    public class Singleton {private static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
    }
    

扩充问题:

  • 什么是反射?如何使用反射?
  • 什么是泛型?它的作用是什么?

6. 设计模式和设计原则

设计模式:

  • 工厂模式
    • 定义一个创建对象的接口,由子类决定实例化哪个类。
  • 策略模式
    • 定义一系列算法,并将它们封装起来,使它们可以互换。

设计原则:

  • 单一职责原则
    • 一个类应该只有一个引起它变化的原因。
  • 开闭原则
    • 软件实体应该对扩展开放,对修改关闭。

扩充问题:

  • 什么是观察者模式?它的应用场景是什么?
  • 什么是依赖注入?它如何提高代码的可测试性?

7. Maven 和 Git

Maven:

  • 生命周期
    • 清理(clean)、编译(compile)、测试(test)、打包(package)、安装(install)、部署(deploy)。
  • 依赖冲突
    • 使用 mvn dependency:tree 查看依赖树,排除冲突的依赖。

Git:

  • 创建分支并推送
    git checkout -b new_branch
    git push origin new_branch
    
  • 解决合并冲突
    • 手动编辑冲突文件,然后 git addgit commit

扩充问题:

  • 什么是 Git 的 rebase 和 merge?它们的区别是什么?
  • 如何撤销上一次的提交?
    git reset --soft HEAD~1
    

8. 微信小程序和云开发

小程序开发:

  • 页面生命周期
    • onLoadonShowonReadyonHideonUnload
  • 页面跳转
    wx.navigateTo({ url: '/pages/targetPage' });
    

云开发:

  • 云函数
    • 云函数是在云端运行的代码,可以通过 API 调用。
  • 云数据库
    • 使用 wx.cloud.database() 访问云数据库。

扩充问题:

  • 如何实现小程序的用户登录?
  • 云开发和传统服务器开发的区别是什么?

总结

通过这些问题和答案,你可以更全面地准备面试。建议你结合实际项目经验,深入理解每个问题的背景和应用场景,并在面试中展示你的技术能力和解决问题的能力。祝你面试顺利!


http://www.ppmy.cn/server/164404.html

相关文章

Go学习:类型转换需注意的点 以及 类型别名

目录 1. 类型转换 2. 类型别名 1. 类型转换 在从前的学习中,知道布尔bool类型变量只有两种值true或false,C/C、Python、JAVA等编程语言中,如果将布尔类型bool变量转换为整型int变量,通常采用 “0为假,非0为真”的方…

代理模式 - 代理模式的应用

引言 代理模式(Proxy Pattern)是一种结构型设计模式,它允许你提供一个代理对象来控制对另一个对象的访问。代理对象通常会在客户端和目标对象之间起到中介的作用,从而可以在不改变目标对象的情况下,增加额外的功能或控…

MySQL知识点总结(十七)

在从属服务器上执行RESET SLAVE命令时,会发生哪些操作? RESET SLAVE命令会断开从属服务器与主服务器的连接,以重置从属服务器,具体效果如下:清除 master.info和relay.log资料档案库删除所有中继日志启动新的中继日志文…

基于FPGA的BT656编解码

概述 BT656全称为“ITU-R BT.656-4”或简称“BT656”,是一种用于数字视频传输的接口标准。它规定了数字视频信号的编码方式、传输格式以及接口电气特性。在物理层面上,BT656接口通常包含10根线(在某些应用中可能略有不同,但标准配置为10根)。这些线分别用于传输视频数据、…

LLaMA-Factory 微调LLaMA3

LoRA介绍 LoRA(Low-Rank Adaptation)是一种用于大模型微调的技术, 通过引入低秩矩阵来减少微调时的参数量。在预训练的模型中, LoRA通过添加两个小矩阵B和A来近似原始的大矩阵ΔW,从而减 少需要更新的参数数量。具体来…

Flask 使用Flask-SQLAlchemy操作数据库

username db.Column(db.String(64), uniqueTrue, indexTrue); password db.Column(db.String(64)); 建立对应关系 如果是多对多关系就建一张表,关联两个表的id role_id db.Column(db.Integer, db.ForeignKey(‘roles.id’)) ‘’’ 帮助作关联查询 relati…

FPGA 使用 CLOCK_LOW_FANOUT 约束

使用 CLOCK_LOW_FANOUT 约束 您可以使用 CLOCK_LOW_FANOUT 约束在单个时钟区域中包含时钟缓存负载。在由全局时钟缓存直接驱动的时钟网段 上对 CLOCK_LOW_FANOUT 进行设置,而且全局时钟缓存扇出必须低于 2000 个负载。 注释: 当与其他时钟约束配合…

STM32 中断系统

目录 中断 定义: 中断处理的过程: 1.中断申请: 2.中断响应: 3.中断处理: 4.中断向量 : 5.中断返回: 中断优先级 1.抢占优先级 2.响应优先级 3.自然优先级 中断嵌套 中断执行流程 中断源 NV…