面试常问问题

项目篇

Faasit项目有什么难点 or 创新点 ?

  • 首先Faasit项目我负责了几个模块,分别有部署模块、运行时模块、AI训练模块

    • 部署模块中我遇到的难点有原生的Knative部署非常慢并且有着国内的网络问题,于是我通过kn的API自己搭建了一套kn的部署方案

      • 方案中的创新点包括:使用base镜像+代码目录映射的方式进行部署,可以加快部署的效率

      • 方案中的难点包括:

        • k8sorkn并不支持像docker那样的目录映射功能
        • kn支持持久化卷pvc,但要求那个卷是只读的,而我们需要可读可写的(因为要上传代码)
    • 运行时模块中遇到的难点包括 durable function 模型的设计,由于不像Azure一样有一个事件机制,因此只能手动模拟一个调用堆栈

你在项目中用到了哪些设计模式

  • 工厂方法

    • 不同的运行时行为不同,我定义了一个create_handler方法创建对应平台的运行时
  • 生成器模式

    • 设计workflow的时候其需要指定较多的函数,使用了一个builder实现workflow的构建
    • 实现函数状态类的时候,有一个DurableFunctionState类以及ScopedClient类,以此做不同类型的状态存储
  • 单例模式

  • 适配器模式

    • 将一个函数适配到多个平台使用了

后端篇

有用户说他登录不上某个网页了,你该怎么排查

  • 可能的原因

    • 服务器出口带宽不够用。
    • 服务器过载太大忙不过来,CPU或内存消耗完了
    • 代码没写好,MySQL语句没有优化
    • 数据库瓶颈,数据库太大了
  • 排查方法

    • 自己先打开一下,看看是服务端的问题还是客户端的问题
    • 使用浏览器的调试功能查看是哪个数据加载的太慢
    • 看一下硬件资源(带宽,CPU和内存)
    • 如果硬件资源消耗都不高,看一下日志

Redis是如何加锁的

  • Redis的SET命令有个NX参数可以实现”当key不存在的时候才插入”,所以可以用它来实现分布式锁

    • 如果key不存在,则显示插入成功,可以用来表示加锁成功
    • 如果key存在,则显示插入失败,可以用来表示加锁失败
  • Redis实现分布式锁时,对于加锁操作,需要满足3个条件

    • 加锁包括了读取锁变量、检测锁变量和设置锁变量的操作,因此他们必须是原子的,可以使用SET命令带上NX选项实现加锁
    • 锁变量需要设置过期时间,以免客户端拿到锁后发生异常
    • 锁变量的值需要能够区分来自不同客户端的加锁操作,使用SET命令设置锁变量值时,每个客户端设置的值是一个唯一值

https

  • 解决的HTTP的问题

    • 信息加密:交互信息无法被窃取
    • 校验机制:无法篡改通信内容,篡改了就无法显示了
    • 身份证书:验证访问的对象是不是真的对象

能不能写一个CPU消耗为100%的程序,50%呢

  • 100%运行的只要while(1)就好了
  • 50%的可以设置忙等时间和休息时间相等,忙等时间就可以写不断地获取时间,计算忙等的时间够不够了

你去办卡接入了一个网络,你怎么判断你连接到的网络是不是安全的

  • 检查网络配置

    • 使用加密协议,确保无限网络使用了加密协议
    • 检查路由器确保更改了默认的用户名和密码
  • 验证证书和加密

    • https
    • DNS

你连接到一个网络之后打开淘宝之类的APP,使用HTTP协议输入用户名和密码,会导致密码泄露吗

  • 不安全,因为http协议是明文传输,这意味着数据在传输过程中可以被拦截和读取

如果是在登录态访问淘宝,会有密码泄露吗?

  • 会话劫持

    • 可以获取会话令牌
    • 中间人攻击
  • 重放攻击

使用了https,有可能发生密码泄露吗?

  • 会的,中间服务器伪造证书,但是会提示用户是否信任中间证书,怕危险就不要点,本质上是不会泄露的。

数据库的范式有哪些

  • 第一范式——无重复列

    • 每一列都是不可分割的基本数据项
  • 第二范式——属性完全依赖于主键(消除部分子函数依赖)

    • 满足第一范式的基础上,每一个非主属性完全函数依赖于某个候选键
    • 例如如果有属性学号、课程名称、成绩、学分的属性,那就不满足,因为学分不完全依赖于学号
  • 第三范式——属性不依赖于其他非主属性(消除传递依赖)

    • 每个非主属性都不传递依赖于候选键
  • BCNF范式

    • 数据库表中的每个属性都不传递依赖于候选键
  • 第四范式

    • 非主属性不应该有多值
  • 第五范式

    • 表必须可以分解为较小的表

面试常问问题
http://example.com/2024/05/28/interview/
作者
dydy
发布于
2024年5月28日
许可协议