面试难点问题记录

遇到的常见加密类型

base64:

表现形式一般为\u 或&#开头

md5:

不可逆,32 位字符

需要找到盐再加密生成参数值

SHA1:

关键词位 Sha1

HMAC:

DES:

关键词:DES,mode,padding

密钥可以是任意的 56 位数

AES:

关键词:AES,mode,padding

需要找到 key,再加密生成参数值

关系型和非关系型数据库的区别

关系型数据库:

特性:

1、关系型数据库,是指采用了关系模型来组织数据的数据库;

2、关系型数据库的最大特点就是事务的一致性

3、简单来说,关系型值得就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织

优点:

1、容易理解,二维表结构是非常接近逻辑世界的一个概念,关系模型相对网状,层次等其他模型来说更容易理解

2、使用方便,通用的 SQL 语言使得操作关系型数据库非常方便

3、易于维护,丰富的完整性大大降低了数据冗余和数据不一致的概率

4、支持 SQL,可用于复杂的查询

缺点:

1、为了维护一致性付出的代价就是其读写性能比较差

2、固定的表格结构

3、海量数据的高效率读写

非关系型数据库:

特性:

1、使用键值对储存数据

2、分布式

3、一般不支持 ACID 特征

4、非关系型数据库严格来说不是一种数据库,应该是一种数据结构化存储方法的集合

优点:

1、无需经过 sql 层的解析,读写性能高

2、基于键值对,数据没有耦合性,容易拓展

3、存储数据的格式:nosql 的存储格式是 key,value 形式,图片形式、文档形式等等,二关系型数据库之支持基础类型

缺点:

1、不提供 sql 支持,学习和使用成本较高

2、无事务处理,附加功能和报表等支持也不好

app 逆向的过程以及其中遇到的的加密,怎么解决

1、使用 fiddler 查找接口

2、使用 jad 反编译 app 的安装文件

3、在 java 代码中找到加密块

4、使用 Python 加密生成请求参数

瓜子二手的使用的 md5 加密

抖音使用的 aes 加密

xpath 提取标签下所有的数据,包括子标签的数据

//text()

打开一次网页会发生什么

DNS 解析:将域名解析成 ip 地址

TCP 链接:TCP3 次握手

发送报文:发送 HTTP 请求报文

接受响应:服务器处理请求并返回 HTTP 报文

页面渲染:浏览器解析渲染页面

断开链接:TCP4 次握手

scrapy 架构

scrapy 的核心处理流程由五大部分构成,调度器(Scheduler)、下载器(Downliader)、爬虫(Spiders)、管道(Item Pipeline)、引擎(Scrapy Engine)

工作流程:

1、将网址传给 Scrapy 引擎

2、Scrapy 引擎将网址传给下载中间件

3、下载中间件将网址传给下载器

4、下载器将网址发送 request 请求进行下载

5、网址接受请求,将响应返回给下载器

6、下载器将收到的响应返回给下载中间件

7、下载中间件与 Scrapy 引擎通信

8、scrapy 将 response 响应信息传递给爬虫中间件

9、爬虫中间件将响应传给对应的爬虫进行处理

10、爬虫处理后,会提取出数据和新的请求信息,将处理的信息传给爬虫中间件

11、爬虫中间件将处理后的信息传递给 Scrapy 引擎

12、Scrapy 接收到信息后,会将项目实体传递给实体管道进行进一步处理,同时新的信息给调度器

13、随后重复进行 1 ~ 12 步,一直到调度器中没有网址或者异常退出为止