面试问题知识
文章目录
- 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 filename755表示:所有者有读、写、执行权限(7),组用户和其他用户有读和执行权限(5)。
VMware 和 CentOS:
- 安装 CentOS 的步骤:
- 在 VMware 中创建一个新的虚拟机。
- 选择 CentOS 的 ISO 文件作为安装介质。
- 配置虚拟机的硬件(内存、硬盘等)。
- 启动虚拟机并按照安装向导完成 CentOS 的安装。
- 配置 CentOS 的网络连接:
- 编辑网络配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-eth0 - 设置
ONBOOT=yes和BOOTPROTO=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 性能?
- 减少嵌套层级,避免使用通配符选择器,使用
transform和opacity进行动画优化。
- 减少嵌套层级,避免使用通配符选择器,使用
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 通过垃圾回收器自动回收不再使用的对象。
String、StringBuilder、StringBuffer:String是不可变的,StringBuilder和StringBuffer是可变的。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 add和git commit。
- 手动编辑冲突文件,然后
扩充问题:
- 什么是 Git 的 rebase 和 merge?它们的区别是什么?
- 如何撤销上一次的提交?
git reset --soft HEAD~1
8. 微信小程序和云开发
小程序开发:
- 页面生命周期:
onLoad、onShow、onReady、onHide、onUnload。
- 页面跳转:
wx.navigateTo({ url: '/pages/targetPage' });
云开发:
- 云函数:
- 云函数是在云端运行的代码,可以通过 API 调用。
- 云数据库:
- 使用
wx.cloud.database()访问云数据库。
- 使用
扩充问题:
- 如何实现小程序的用户登录?
- 云开发和传统服务器开发的区别是什么?
总结
通过这些问题和答案,你可以更全面地准备面试。建议你结合实际项目经验,深入理解每个问题的背景和应用场景,并在面试中展示你的技术能力和解决问题的能力。祝你面试顺利!
相关文章:
面试问题知识
文章目录 1. Linux 和 CentOS基础指令:VMware 和 CentOS:扩充问题: 2. 前端开发(JS、CSS)JavaScript:CSS:扩充问题: 3. 数据库(MySQL)基础语法:事…...
Alibaba开发规范_编程规约之命名风格
文章目录 命名风格的基本原则1. 命名不能以下划线或美元符号开始或结束2. 严禁使用拼音与英文混合或直接使用中文3. 类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等4. 方法名、参数名、成员变量、局部变量使用 low…...
MATLAB中的IIR滤波器设计
在数字信号处理中,滤波器是消除噪声、提取特征或调整信号频率的核心工具。其中,无限脉冲响应(IIR)滤波器因其低阶数实现陡峭滚降的特性,被广泛应用于音频处理、通信系统和生物医学工程等领域。借助MATLAB强大的工具箱&…...
vector容器(详解)
本文最后是模拟实现全部讲解,文章穿插有彩色字体,是我总结的技巧和关键 1.vector的介绍及使用 1.1 vector的介绍 https://cplusplus.com/reference/vector/vector/(vector的介绍) 了解 1. vector是表示可变大小数组的序列容器。…...
nginx目录结构和配置文件
nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件暂存目录 ├── conf # Nginx所有配置文件的目录 │ ├── fastcgi.conf # fastcgi相关参…...
deepseek本地部署会遇到哪些坑
在本地部署DeepSeek(或其他类似AI模型)时,可能会遇到以下常见问题及解决方案: 1. 硬件资源不足 问题表现: GPU不兼容(如型号过旧)、显存不足(OOM错误)或CPU模式性能极低。解决方案: 确认GPU支持CUDA,检查显存需求(如至少16GB显存)。使用nvidia-smi监控显存,通过降…...
使用 PyTorch 实现逻辑回归并评估模型性能
1. 逻辑回归简介 逻辑回归是一种用于解决二分类问题的算法。它通过一个逻辑函数(Sigmoid 函数)将线性回归的输出映射到 [0, 1] 区间内,从而将问题转化为概率预测问题。如果预测概率大于 0.5,则将样本分类为正类;否则分…...
python学opencv|读取图像(五十二)使用cv.matchTemplate()函数实现最佳图像匹配
【1】引言 前序学习了图像的常规读取和基本按位操作技巧,相关文章包括且不限于: python学opencv|读取图像-CSDN博客 python学opencv|读取图像(四十九)原理探究:使用cv2.bitwise()系列函数实现图像按位运算-CSDN博客…...
【VUE案例练习】前端vue2+element-ui,后端nodo+express实现‘‘文件上传/删除‘‘功能
近期在做跟毕业设计相关的数据后台管理系统,其中的列表项展示有图片展示,添加/编辑功能有文件上传。 “文件上传/删除”也是我们平时开发会遇到的一个功能,这里分享个人的实现过程,与大家交流谈论~ 一、准备工作 本次案例使用的…...
使用真实 Elasticsearch 进行高级集成测试
作者:来自 Elastic Piotr Przybyl 掌握高级 Elasticsearch 集成测试:更快、更智能、更优化。 在上一篇关于集成测试的文章中,我们介绍了如何通过改变数据初始化策略来缩短依赖于真实 Elasticsearch 的集成测试的执行时间。在本期中࿰…...
【R语言】函数
一、函数格式 如下所示: hello:函数名;function:定义的R对象是函数而不是其它变量;():函数的输入参数,可以为空,也可以包含参数;{}:函数体,如果…...
Vue 3 30天精进之旅:Day 12 - 异步操作
在现代前端开发中,异步操作是一个非常常见的需求,例如从后端API获取数据、进行文件上传等任务。Vue 3 结合组合式API和Vuex可以方便地处理这些异步操作。今天我们将重点学习如何在Vue应用中进行异步操作,包括以下几个主题: 异步操…...
VSCode插件Live Server
简介:插件Live Server能够实现当我们在VSCode编辑器里修改 HTML、CSS 或者 JavaScript 文件时,它都能自动实时地刷新浏览器页面,让我们实时看到代码变化的效果。再也不用手动刷新浏览器了,节省了大量的开发过程耗时! 1…...
50. 正点原子官方系统镜像烧写实验
一、Windows下使用OTG烧写系统 1、在Windos使用NXP提供的mfgtool来向开发烧写系统。需要用先将开发板的USB_OTG接口连接到电脑上。 Mfgtool工具是向板子先下载一个Linux系统,然后通过这个系统来完成烧写工作。 切记!使用OTG烧写的时候要先把SD卡拔出来&…...
在C#中,什么是多态如何实现
在C#中,什么是多态?如何实现? C#中的多态性 多态性是面向对象编程的一个核心概念,他允许对象以多种形式表现.在C#中,多态主要通过虚方法,抽象方法和接口来实现. 多态性的存在使得同一个行为可以有多个不同的表达形式 即同一个接口可以使用不同的实例来执行不同的操作 虚方…...
搜索引擎友好:设计快速收录的网站架构
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/14.html 为了设计一个搜索引擎友好的网站架构,以实现快速收录,可以从以下几个方面入手: 一、清晰的目录结构与层级 合理划分内容:目录结构应…...
扩散模型(三)
相关阅读: 扩散模型(一) 扩散模型(二) Latent Variable Space 潜在扩散模型(LDM;龙巴赫、布拉特曼等人,2022 年)在潜在空间而非像素空间中运行扩散过程,这…...
it基础使用--5---git远程仓库
it基础使用–5—git远程仓库 1. 按顺序看 -git基础使用–1–版本控制的基本概念 -git基础使用–2–gti的基本概念 -git基础使用–3—安装和基本使用 -git基础使用–4—git分支和使用 2. 什么是远程仓库 在第一篇文章中,我们已经讲过了远程仓库,每个本…...
Baklib如何改变内容管理平台的未来推动创新与效率提升
内容概要 在信息爆炸的时代,内容管理平台成为了企业和个人不可或缺的工具。它通过高效组织、存储和发布内容,帮助用户有效地管理信息流。随着技术的发展,传统的内容管理平台逐渐暴露出灵活性不足、易用性差等局限性,这促使市场需…...
100.1 AI量化面试题:解释夏普比率(Sharpe Ratio)的计算方法及其在投资组合管理中的应用,并说明其局限性
目录 0. 承前1. 夏普比率的基本概念1.1 定义与计算方法1.2 实际计算示例 2. 在投资组合管理中的应用2.1 投资组合选择2.2 投资组合优化 3. 夏普比率的局限性3.1 统计假设的限制3.2 实践中的问题 4. 改进方案4.1 替代指标4.2 实践建议 5. 回答话术 0. 承前 如果想更加全面清晰地…...
Ubuntu 下 nginx-1.24.0 源码分析 ngx_debug_init();
目录 ngx_debug_init() 函数: NGX_LINUX 的定义: ngx_debug_init() 函数: ngx_debug_init() 函数定义在 src\os\unix 目录下的 ngx_linux_config.h 中 #define ngx_debug_init() 也就是说这个环境下的 main 函数中的 ngx_debug_init() 这…...
基于人脸识别的课堂考勤系统
该项目是一个基于人脸识别的课堂考勤系统,使用Python开发,结合了多种技术实现考勤功能。要开发类似的基于人脸识别的考勤系统,可参考以下步骤: 环境搭建:利用Anaconda创建虚拟环境,指定Python版本为3.8&am…...
开启 AI 学习之旅:从入门到精通
最近 AI 真的超火,不管是工作还是生活里,到处都能看到它的身影。好多小伙伴都跑来问我,到底该怎么学 AI 呢?今天我就把自己学习 AI 的经验和心得分享出来,希望能帮到想踏入 AI 领域的朋友们! 一、学习内容有哪些 (一)编程语言 Python 绝对是首选!它在 AI 领域的生态…...
13 尺寸结构模块(size.rs)
一、size.rs源码 // Copyright 2013 The Servo Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE…...
16.[前端开发]Day16-HTML+CSS阶段练习(网易云音乐五)
完整代码 网易云-main-left-rank(排行榜) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&q…...
ARM嵌入式学习--第十天(UART)
--UART介绍 UART(Universal Asynchonous Receiver and Transmitter)通用异步接收器,是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括与监控…...
MoonBit 编译器(留档学习)
MoonBit 编译器 MoonBit 是一个用户友好,构建快,产出质量高的编程语言。 MoonBit | Documentation | Tour | Core This is the source code repository for MoonBit, a programming language that is user-friendly, builds fast, and produces high q…...
【TypeScript】基础:数据类型
文章目录 TypeScript一、简介二、类型声明三、数据类型anyunknownnervervoidobjecttupleenumType一些特殊情况 TypeScript 是JavaScript的超集,代码量比JavaScript复杂、繁多;但是结构更清晰 一、简介 为什么需要TypeScript? JavaScript的…...
Unity游戏(Assault空对地打击)开发(3) 摄像机的控制
详细步骤 打开My Assets或者Package Manager。 选择Unity Registry。 搜索Cinemachine,找到 Cinemachine包,点击 Install按钮进行安装。 关闭窗口,新建一个FreeLook Camera,如下。 接着新建一个对象Pos,拖到Player下面…...
【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
目录 1 -> 生命周期 1.1 -> 应用生命周期 1.2 -> 页面生命周期 2 -> 资源限定与访问 2.1 -> 资源限定词 2.2 -> 资源限定词的命名要求 2.3 -> 限定词与设备状态的匹配规则 2.4 -> 引用JS模块内resources资源 3 -> 多语言支持 3.1 -> 定…...
