面试会问的一些问题

一些常见问题

网络常见安全问题:

1.什么是跨站脚本攻击

    ------ XSS    cross site script   - 跨站脚本攻击

            在用户提交内容的时候,如果不做消毒处理,在不知不觉中就执行了某些恶意脚本。例如上传头像时候,将一段恶意脚本当作头像上传,浏览器自作聪明处理

Django中

------- 对内容进行消毒,去掉敏感符号

SECURE_BROWSER_XSS_FILTER = True

-------- 阻止浏览器自动推断内容类型

SECURE_CONTENT_TYPE_NOSNIFF = True

自动帮你消毒 ---> 替换符号,或者正则

  1. 什么是跨站请求伪造(骗cookie)
    ------ XSRF

  2. 什么是点击劫持 Click-Jacking
    iframe 加载页面设为透明,用其他页面诱其点击

1.cookie和session的应用场景

因为HTTP是无状态协议,两次请求不会保留用户状态,要想做用户跟踪就需要做相应的处理。主要有三种方式:URL重写(在URL中携带用户的信息)、隐藏域(埋点,在表单中通过隐藏字段携带用户信息)、浏览器本地存储(Cookie、localstorage、sessionstorage)服务器端如果想保留⽤户信息可以为每个⽤户创建⼀个session(会话),

将⽤户数据保存在session中,将session标识符(sessionid)写到浏览器cookie中,再次请求

服务器时,sessionid会通过请求头携带cookie数据的⽅式发送给服务器,服务器通过sessionid

找到对应的会话对象,然后就可以取出⽤户数据了

celery

web sorcket 和HTTP的关系?

HTTP协议是请求响应式的协议,服务器无法主动发数据给浏览器

pull 模式:拉模式/ push模式:推模式(服务器主动发数据给浏览器)

    —不停的轮询(每隔一段时间就向服务器发送请求问是否有新消息)

    — 建立长连接

        ~ Ajax 长轮询

        ~ iframe 长轮询()

        ~ web sorcket (全双工)

WebSocket是一种在单个TCP连接上进行全双工通讯的协议。WebSocket允许服务端主动向客户端推送数据。在WebSocket协议中,客户端浏览器和服务器只需要完成一次握手就可以创建持久性的连接,并在浏览器和服务器之间进行双向的数据传输。

如果使用了多进程,进程间如何通信?

    ~ IPC机制:Inter Processes Communication

        -- 管道 (操作系统提供进程间的IO通信)

        -- 套接字(跨网络都可以实现进程通信)

        -- 通过中间平台托管数据

什么是迭代器

· 实现了迭代器协议的对象就是迭代器,那么什么是迭代器协议。实际上就是next和iter的魔术方法

MySQL、Redis、MongoDB各自的应用场景?

MongoDB的使用场景:数据不是特别重要(例如通知,推送这些),数据表结构变化比较频繁,数据量特别大,数据的并发性特别高,数据结构比较特别(地标)

redis:注重高性能,适用于即时性要求高的的业务,比如秒杀,库存;

mysql:常规关系型数据

跨平台工具

react ——> React Native / Uni-App(一套接口8个平台) / Flutter(渲染效果最好,接近原生)/ Ionic / PhoneGap

移动端(原生开发)

~ Android:Java / Kotlin

~ iOS:Object-C  / swift 

从用户输入URL到返回页面经历了什么?

用户输入域名 --->先查找本地缓存的DNS --->查找根DNS 通过DNS服务器把域名翻译成IP地址(不一定是服务器地址,可能是反向代理服务器地址)----->防火墙一级防火墙80/443/22--- > 访问到web服务器(处理静态资源的请求:HTML,css , js ----> Apache/Nginx/Tengine) -------uWSGI/CGI------> web应用服务器 负责动态内容生成 python: uWSGI/ Gunicorn java:tomat/Resin/undertow ---->二级服务器 -----> 数据库服务器 MySQL/Oracle / 缓存都服务器 redis 消息队列服务器RabitMQ/Kafka ------> 返回到web服务器 ----> 浏览器

防护墙内组织一个内网 VPC+交换机+NAT 端口映射 80/443 ----> 反向代理服务器 22---> 跳板机(SSH)

反向代理的作用:

1.保护真正的服务器不暴露给公网

2. 配置负载均衡(应对高并发)Nginx/LVS/  主机+备机 keepalived-热切换,LVS+keepalive配置双活

项目中可能会问到的问题

  1. 项目部署最后使用了多少台服务器?分别用来做什么的?云主机还是物理机?

最后三台云主机,一台web项目,一台数据库,另一台考虑到备份。

  1. 用JWT生成用户身份令牌的优缺点是什么?

因为json的通用性,所有JWT是可以跨语言支持的,像JAVA,Javascript,PHP等多种语言.

因为有了playload部分,所以JWT可以在自身存储一些其他业务逻辑所必要的非敏感字段,

便于传输,jwt的构成非常简单,字节占用很小,所以它非常便于传输

不需要在服务端保存会话信息,所以易于扩展

我是这样理解的:一般情况下我们使用 JWT 的话,在我们登录成功获得 token 之后,一般会选择存放在 local storage 中。然后我们在前端通过某些方式会给每个发到后端的请求加上这个 token,这样就不会出现 CSRF 漏洞的问题。因为,即使有个你点击了非法链接发送了请求到服务端,这个非法请求是不会携带 token 的,所以这个请求将是非法的。

但是这样会存在 XSS 攻击中被盗的风险,为了避免 XSS 攻击,你可以选择将 token 存储在标记为httpOnly 的cookie 中。但是,这样又导致了你必须自己提供CSRF保护。

  1. 缓存数据和数据库数据同步问题是怎么解决的?有没有不同步的情况?
    保持一致策略:当数据更新时,先删除缓存,如果缓存删除成功,再更新数据库
    读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存和数据库间的数据一致性问题。不管是先写数据库,再删除缓存;还是先删除缓存,再写库,都有可能出现数据不一致的情况
    1. 如果删除了缓存Redis,还没有来得及写库MySQL,另一个线程就来读取,发现缓存为空,则去数据库中读取数据写入缓存,此时缓存中为脏数据。
    2. 如果先写了库,在删除缓存前,写库的线程宕机了,没有删除掉缓存,则也会出现数据不一致情况。
      延迟双删:
      1)先删除缓存;
      2)再写数据库;
      3)休眠1秒(根据具体的业务时间来定);
      4)再次删除缓存。
  2. 你这套系统是怎么实现过程控制的?
    敏捷开发+用户故事+bug调优
  3. Django接入websocket的流程是怎样的,如何实现消息的定时推送?
    1. 下载pip3 install channels==2.3

    2. 注册到setting.py里的app

    3. 在setting.py同级的目录下注册channels使用的路由----->routing.py

    4. 将routing.py注册到setting.py

    5. 把urls.py的路由注册到routing.py里

    6. 编写wsserver.py来处理websocket请求
      如果为一个单独的视图函数处理一个websocklet连接可以使用accept_websocket装饰器,它会将标准的HTTP请求路由到视图中。使用require_websocke装饰器只允许使用WebSocket连接,会拒绝正常的HTTP请求。

       1.request.is_websocket()
       如果是个websocket请求返回True,如果是个普通的http请求返回False,可以用这个方法区分它们。
      

      3.WebSocket.wait()
      返回一个客户端发送的信息,在客户端关闭连接之前他不会返回任何值,这种情况下,方法将返回None

      4.WebSocket.read()
        如果没有从客户端接收到新的消息,read方法会返回一个新的消息,如果没有,就不返回。这是一个替代wait的非阻塞方法
      
       5.WebSocket.count_messages()
        返回消息队列数量
      
       6.WebSocket.has_messages()
        如果有新消息返回True,否则返回False
      
       7.WebSocket.send(message)
        向客户端发送消息
      
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342