【面试】【程序员基本知识】计算机网络,设计模式,正则,安全

一、计算机网络

(一)基本概念

  • 计算机网络 是一种将多台计算机通过硬件和软件互联,以实现资源共享和数据传输的技术。
  • 组成部分:
    • (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) 日志记录和监控,快速发现异常行为。
相关推荐
9号达人11 分钟前
if-else 优化的折中思考:不是消灭分支,而是控制风险
java·后端·面试
中微子26 分钟前
🚀 2025前端面试必考:手把手教你搞定自定义右键菜单,告别复制失败的尴尬
javascript·面试
jump68030 分钟前
js中数组详解
前端·面试
聪明的笨猪猪1 小时前
Java JVM “垃圾回收(GC)”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
胖好白2 小时前
【计算机网络笔记】计算机网络学习笔记1
计算机网络
用户093 小时前
SwiftUI 键盘快捷键作用域深度解析
ios·面试·swiftui
用户093 小时前
Xcode 26 的10个新特性解析
ios·面试·swift
用户093 小时前
Android唤醒锁优化指南
android·面试·kotlin
程序员的奶茶馆4 小时前
Python 数据结构面试真题:如何实现 LRU 缓存机制
python·面试
召摇4 小时前
在浏览器中无缝运行Go工具:WebAssembly实战指南
后端·面试·go