【面试】-这个问题你都明白了,月薪20K+,学员分享,留着以后使用

228 阅读5分钟

主要针对各位的复习链路展开叙述。

作为服务端研发,web开发整体需要掌握的知识。

Python

  • 深浅 copy

  • 作用域、闭包

    1. 可能会出一大堆的函数调用,然后分别看输出什么(涉及到全局修改)
  • 装饰器(在纸上可以写出来,整个调用链)

  • 迭代器、生成器

  • 面向OOP编程:封装、继承、多态

  • map、filter、reduce、及各类内置函数(sorted、zip)

    1. 针对一个数组,里面有若干值,一行代码实现对偶数下标对应的数 + 3,求和
  • 类的 __new__、__init__,以及一些其它的各类魔术方法各代表什么含义

  • 进程、线程、协程

    1. 定义(尽可能的详细)
    2. 进程、线程的状态
    3. 守护进程、守护线程
    4. 通信机制有哪些
    5. 线程池、进程池(如何自定义去实现进程池、线程池)
  • socket 网络编程

    1. IO 模型

      阻塞IO、非阻塞IO、同步IO、异步IO、IO对路复用

    2. select、poll、epoll(水平触发&边缘触发,默认机制是什么,对比)

    3. cpu 的内核态和用户态

    4. 并发编程,GIL锁,那么python里面就一定是线程安全么?

    5. asyncio 异步编程

  • python的内存管理和垃圾回收(GC)

    1. 小数据池、字符驻留、缓存
    2. 引用计数、标记清除、分代回收
  • 框架

    1. WSGI,定义且实现的框架有哪些
    2. django、flask、tornado、sanic (常见框架基本使用,涵盖的功能要掌握清楚)
    3. 有兴趣的话可以看下源码,整个调用链是怎么执行的
      1. 请求怎么分发进去的
      2. 构造 request 对象
      3. 路由匹配
      4. 到达视图
  • 可能其它会问到一些理解题

    1. 程序异常你是怎么理解的,比如 raise 或者 return 错误码

网络

  • 一条url从访问到结束的生命周期
  • 服务架构图
    1. 服务器配置、几台机器、用什么进行部署(这一点要比较清晰)
    2. 开发模式、上线流程
  • nginx
    1. 动静分离
    2. 分流
    3. 负载均衡策略
    4. 怎么配置 websocket
  • uwsgi、gunicorn、uvicorn
    1. 一些常见的配置项
    2. 怎么和 nginx 做配合的
  • tcp&udp
    1. 区别
    2. tcp
      1. 握手为什么是3次
      2. 挥手为什么是4次
      3. 挥手的时候为什么要等待 2MSL 的时间
      4. tcp是怎么保障了传输流是可靠的
  • http&https
    1. http1.0 & http1.1 & http2.0 有什么区别
    2. https 是什么?怎么保障了数据传输是密文的,TLS 是怎么建立安全连接的
  • tcp & http & websocket 有什么区别

数据库(Mysql&Redis)

这里的题非常之多,举几个例子。

用服务要明白三个要点:容灾扩容备份

mysql

  • 常见的数据库引擎,区别
  • innodb 为什么使用 b+ 树作为数据库引擎,为何不使用 b 树、红黑树或者其它数据结构?
  • char 和 varchar 区别
  • 索引、执行计划
  • 事务,隔离级别分别对应了什么问题,怎么解决?
  • 乐观锁和悲观锁,mysql 有哪些锁
  • 高可用、主从、读写分离,django 代码层怎么配置

redis

  • 常用数据类型
  • 有哪些应用场景
  • 缓存雪崩、缓存击穿
  • 缓存热点数据如何和数据库保持一致性
  • 底层实现的数据结构
  • redis 如何保证高可用?
  • redis 如何保证数据不丢失?
  • 做集群有哪些方案,常见就是 redis-cluster
  • redis 布隆过滤器

前端

前端东西很多,以下问题简单了解即可

可以作为一个亮点,可以简单了解一些常用问题。

  • == 和 === 区别
  • jq 和 vue 的区别
  • 什么是数据驱动
  • 怎么做响应式布局
  • vue、react 的 key 有什么含义
  • vue 的生命周期函数,各会做什么事情
  • vue 的 nextTick 有何意义
  • 什么作为打包工具(webpack),什么作为代码编译(babel)

服务

  • 做监控么(GF监控)
  • 日志分析(ELK)
    1. es
    2. logstash
    3. kibana
  • 接口安全
  • 接口幂等性
  • docker
  • k8s

单机应用

  • 集群
  • 负载均衡
  • 文件共享服务器(OSS)

分布式系统

  • 分布式锁
  • 分布式ID
  • 分布式事务
  • 分布式session

微服务

  • RPC
  • 怎么理解的微服务
  • 服务之间的认证、调用
  • 服务注册、服务发现、服务熔断、降级
  • 服务网格

数据结构&算法

  • 数据结构:数组、链表、队列、堆、栈、二叉树、图
    1. 对应 curd 的时间复杂度
    2. 堆和栈有什么区别?
    3. 二叉树的遍历(BFS、DFS),先序、中序、后序、层序遍历怎么写,递归和非递归的
  • 经典排序算法时间复杂度及区别
    1. 冒泡、选择、插入,例如它们的时间复杂度一样,但是有区别吗?
    2. 快排、归并、堆排
    3. 基数排序、桶排序、希尔排序
  • 力扣:HOT题100道可以做一做
    1. 滑动窗口
    2. 动态规划(DP)
    3. 快慢指针
    4. 双指针
    5. 回溯
    6. 递归
  • TopK 问题
    1. 100亿个数选 top5
    2. 一个文件,里面是单词文本,求top10

业务

  • 团队怎么协作开发的,团队配置
  • git 相关的问题
  • 如何防止重复订单
  • 第三方认证登录
  • 如何进行接口限流
  • 遇到过什么难以解决的问题
  • 认证方式:cookie、session、jwt
  • 业务子系统时序图、流程
    1. 怎么做的这个模块
    2. 时序图

常见设计问题

  • 秒杀系统
  • 对账系统
  • 点赞系统
  • 排行榜系统
  • ...