【面试】【程序员基本知识】计算机网络,设计模式,正则,安全
一、计算机网络
(一)基本概念
- 计算机网络 是一种将多台计算机通过硬件和软件互联,以实现资源共享和数据传输的技术。
- 组成部分:
- (1) 硬件:路由器、交换机、网卡、光纤等。
- (2) 软件:协议栈、操作系统、网络应用等。
(二)网络分层模型
- OSI 七层模型
- (1) 物理层:负责数据的物理传输。
- (2) 数据链路层:提供节点间的数据传输。
- (3) 网络层:负责路由与寻址(如 IP 协议)。
- (4) 传输层:提供端到端的通信(如 TCP/UDP)。
- (5) 会话层:管理会话连接。
- (6) 表示层:处理数据的表示和加密。
- (7) 应用层:为用户提供网络服务。
- TCP/IP 四层模型
- (1) 网络接口层:等同于 OSI 的物理层和数据链路层。
- (2) 互联网层:等同于 OSI 的网络层。
- (3) 传输层:提供可靠或不可靠的数据传输。
- (4) 应用层:直接为应用程序提供服务。
(三)常见协议
- HTTP/HTTPS:超文本传输协议,HTTPS 增加了加密。
- FTP:文件传输协议。
- DNS:域名解析协议。
- SMTP/POP3/IMAP:电子邮件协议。
- WebSocket:实现全双工通信的协议。
二、设计模式
(一)基本概念
- 设计模式 是一套被反复使用的、代码设计的经验总结,用于解决特定场景中的常见问题。
(二)常见设计模式分类
- 创建型模式
- (1) 单例模式:保证一个类仅有一个实例。
- (2) 工厂方法模式:定义一个创建对象的接口,让子类决定实例化的具体类。
- (3) 建造者模式:将复杂对象的构建与其表示分离。
- 结构型模式
- (1) 适配器模式:将一个接口转换成客户端期望的另一个接口。
- (2) 装饰器模式:动态地给对象添加功能。
- (3) 代理模式:为其他对象提供代理以控制访问。
- 行为型模式
- (1) 观察者模式:定义对象间的依赖关系。
- (2) 策略模式:定义一系列算法,将其封装后使其互换。
- (3) 责任链模式:将请求沿着处理链传递。
(三)应用场景
- 单例模式:数据库连接池。
- 装饰器模式:为函数添加日志功能。
- 观察者模式:实现事件监听机制。
三、正则表达式
(一)基本概念
- 正则表达式 是一种文本模式匹配的工具,用于字符串的查找、替换、验证等操作。
(二)常见元字符
- 字符类
\d
:匹配数字。\w
:匹配字母、数字和下划线。.
:匹配任意单个字符(换行符除外)。
- 数量限定符
*
:匹配前一个字符 0 次或多次。+
:匹配前一个字符 1 次或多次。{n,m}
:匹配前一个字符 n 到 m 次。
- 位置锚定
^
:匹配字符串的开头。$
:匹配字符串的结尾。
(三)常见应用场景
-
邮箱验证
- 正则:
^[\w-\.]+@[\w-]+\.[a-z]{2,}$
- 正则:
-
URL 验证
- 正则:
https?:\/\/(www\.)?[\w-]+(\.[\w-]+)+([\/\w-]*)*\/?
- 正则:
-
手机号验证
(中国大陆)
- 正则:
^1[3-9]\d{9}$
- 正则:
四、安全
(一)常见安全问题
- SQL 注入
- 问题:通过插入恶意 SQL 语句来攻击数据库。
- 防范措施:
- (1) 使用参数化查询。
- (2) 检查输入的合法性。
- XSS(跨站脚本攻击)
- 问题:攻击者在网页中插入恶意脚本,劫持用户信息。
- 防范措施:
- (1) 对用户输入进行转义。
- (2) 设置内容安全策略(CSP)。
- CSRF(跨站请求伪造)
- 问题:攻击者通过伪造用户请求来完成未授权的操作。
- 防范措施:
- (1) 验证请求来源。
- (2) 使用 CSRF Token。
(二)安全加密
- 对称加密
- 特点:加密和解密使用相同的密钥。
- 常见算法:AES、DES。
- 非对称加密
- 特点:加密和解密使用不同的密钥(公钥与私钥)。
- 常见算法:RSA、ECC。
- 哈希算法
- 特点:将任意长度数据映射为固定长度值,不可逆。
- 常见算法:MD5、SHA-256。
(三)安全开发实践
- (1) 使用 HTTPS 保护数据传输。
- (2) 定期更新依赖库,避免已知漏洞。
- (3) 实施最小权限原则,限制用户权限。
- (4) 日志记录和监控,快速发现异常行为。