(五) 通用试题——本人项目相关

我自己简历里写的我的项目经历
暂未排序整理

这个底层通信是使用socket吗?
A:是的,因为socket使用还是比较广泛的,各种语言的支持都比较成熟,我使用的是Python的socket库实现的,实现了端口的监听,数据的读取、返回。

Q:你的报文解析是怎么实现的,字符串解析吗?
A:对,接收到HTTP报文后,分为状态行、Header和Body进行解析,状态行解析HTTP请求使用的method,URL。之后解析报文中的首部键值对,比如cookie,最终整理成一个字典对象,最后解析body部分的数据,比如form表单所提交的一些参数。最终得到一个Request对象,属性保存解析出的多项数据。
Q:你的路由分发是怎么做的? 思路有借鉴一些别的框架吗?
A:不过我是使用字典来实现路由注册的。根据不同的业务路基有多个路由脚本,每个脚本都有一个字典,实现了路由到函数的映射,最后多个理由脚本的路由字典update到一个总的字典中,路由函数分发时就根据解析出的path以字典键值的形式查找相应的路由函数,然后处理请求。

Q:我看到你有写一个个人论坛,那你还能写一些前端是吗?
A:是的,也可以写一些基本的前端页面。在写项目的时候也对前端HTML,CSS,Javascript相关的知识进行了学习,因为毕竟是一个要上线的项目,写一下页面也方便查看某个功能的具体实现情况。

面试官:Cookie 和 Session 是什么。
范例:
HTTP 协议是无状态的,一个请求发过来不知道是谁发的。
那么为了标识状态,可以加上一些参数,比如在 query 后面加 ?user_id=1。
但是这么加参数很麻烦,因为要自己手动维护,每个 url 都要改。
那么浏览器就提供了一种方便的数据存储发送机制 Cookie。(可以拓展说 Cookie 是怎么设置和发送的)
用了 Cookie 还是有问题,因为可以被伪造。(可以拓展举例子说如何伪造)
那么进引入了 Session,在服务器生成一个随机数,通过 http 响应让浏览器设置一个 cookie session_id,之后浏览器就可以把这个随机数自动发送过来,然后再和服务器存储的随机数和用户id的映射关系找到这个随机数对应的用户,这样就安全地知道这个请求到底是谁发的了。(可以拓展详细说 Session 的实现和 Session 的不同实现方式)

面试官: redis 了解吗?
范例:
我: 了解 redis。redis 是一个内存数据库,因为数据放内存所以非常快。
主要用它来作为缓存优化热点路由的性能瓶颈。
还可以用它来实现跨进程数据共享,比如实现 CSRF token 和 session。

面试官:get 和 post 什么区别?
范例:
我:按照网上的说法,主要有这么几点区别,post 比 get 更安全,get 有长度限制,xxx。(随便介绍三点,然后停顿一下)
如果面试官没有疑问,你就继续补充主流回答
我:安全体现在这几个方面,get 放在 url 里面普通人能看到,get 能被缓存,xxx。yyy 体现在 aaa 方面,bbb。(自行展开)
如果面试官有疑问,这个可能性很小:
面试官:你说一下你自己的理解/这不是我们要的答案/真的吗
我:其实 get post 没什么区别,无非是放数据的地方不一样。post 也不会更安全,直接浏览器抓包就可以看到,安全要靠 https 保证。(自行展开)

面试官:有没有高并发经验?
(重点在高并发,而不是经验。引回项目。)
范例:高并发的核心有两个,一个是能进行扩容和负载均衡。
单机的话,升级硬件后可以根据按需求设置 Tomcat 线程池 的 连接数, 线程数。
多机的话,可以用 nginx 配置多机负载均衡。第二个是要能处理瞬时请求洪峰,
这一个要靠消息队列来进行削峰。缓解压力之后逐步处理。nginx 我的论坛项目都有用上,
后期想要支持高并发的话可以很容易的通过更新几个配置来针对性处理。(然后说请求来了后,这几个部分在论坛项目是怎么处理请求的。)

Socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
Socket的原理
Socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。
服务器监听,客户端请求,连接确认。

...

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 19:05
点赞 评论 收藏
分享
totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务