首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

10 道 BAT 大厂海量数据面试题(附题解+方法总结)

作者 | 杨立滨 来源 | Doocs开源社区 先来看一下都有哪些题目: •如何大量的 URL 中找出相同的 URL?(百度)•如何大量数据中找出高频词?...(百度)•如何在大量的数据中找出不重复的整数?(百度)•如何在大量的数据中判断一个数是否存在?(腾讯)•如何查询最热门的查询串?(腾讯)•如何统计不同电话号码的个数?...解答思路 由于内存限制,我们依然无法直接将大文件的所有词一次读到内存中。...题目3 题目描述 现有海量日志数据保存在一个超大文件中,该文件无法直接读入内存,要求从中提取某天访问百度次数最多的那个 IP。...之后对每个小文件使用 HashMap 统计 query 出现次数,根据次数排序写入到零外一个单独文件中。

2.8K30

27 个问题,告诉你Python为什么这么设计

CPython退出时为什么不释放所有内存? 当Python退出时,全局命名空间或Python模块引用的对象并不总是被释放。...如果存在循环引用,则可能发生这种情况 C库分配的某些内存也是不可能释放的(例如像Purify这样的工具会抱怨这些内容)。但是,Python在退出时清理内存尝试销毁每个对象。...采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 字典如何在CPython中实现?...字典的哈希表实现使用键值计算的哈希值来查找键。如果键是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。但是,由于无论谁更改键对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。...此函数提供的可迭代列表中创建新列表,对其进行排序返回。例如,下面是如何迭代遍历字典并按keys排序: for key in sorted(mydict): ...

6.6K11
您找到你想要的搜索结果了吗?
是的
没有找到

面试题:我现在上传图片的时候提前预览到图片怎么办?

1、大文件上传 得益于blob的slice方法 当要上传大文件的时候,此方法非常有用,可以将大文件分割分段,然后各自上传,因为分割之后的 Blob 对象和原始的是独立存在的。...这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。...也就是说使用这个方法去创建一个DOMstring 引用这这个内存中的二进制流,然后在赋值到video标签上去就能达到隐藏链接的目的 var debug = { hello: "world" };...URL.createObjectURL(blob)得到的是当前文件的一个内存url 2、内存使用 FileReader.readAsDataURL(blob)得到一段超长的base64的字符串...)依照js垃圾回收机制自动内存中清理 URL.createObjectURL(blob)存在于当前document内,清除方式只有upload()事件或者revokeObjectURL手动清除 4

1.5K10

Python加密服务(一)

hashlib — 加密哈希算法 目标:加密哈希与信息摘要 hashlib 哈希库模块提供了许多哈希算法的 API 支持。哈希算法在中文又被称为散列函数 / 算法,此译文中将统称哈希。...想使用具体某一个哈希算法,只需要使用对应的构造函数 new() 来创建对应的哈希对象。不论想使用哪一种具体的哈希算法,在创建哈希对象后的操作均为一致。...$ python3 hashlib_sha1.py ea360b288b3dd178fe2625f55b2959bf1dba6eef 使用名字创建哈希 有时通过字符串对算法进行引用比直接使用构造函数更加方便...例如,这样可以将哈希类型直接写入配置文件中,这是很方便的。在这种情况下,使用 new() 去创建一个哈希计算器。...增量更新比起读取整个文件进入内存中更加有效率,并且参数的结果是相同的。

1K10

Python 实现视频爬取下载及断电续传优化

转载来源 公众号:Python学习开发 “ 阅读本文大概需要 6 分钟。...默认情况下是stream的值为false,它会立即开始下载文件并存放到内存当中,倘若文件过大就会导致内存不足的情况....iter_content:一块一块的遍历要下载的内容 iter_lines:一行一行的遍历要下载的内容 使用上面两个函数下载大文件可以防止占用过多的内存,因为每次只下载小部分数据。...(chunk_size=512): if chunk: f.write(chunk) 上面的代码表示请求了url_file,这个url_file是一个大文件,所以开启了stream...如何在代码中实现用呢,来接着往下看 HTTP请求头Range range是请求资源的部分内容(不包括响应头的大小),单位是byte,即字节,0开始.

1.7K40

Scrapy常见问题

下载中间件, 爬虫发起请求request的时候调用,列更换修改代理ip,修改UA 爬虫中间件 浏览器返回响应response的时候调用,无效的数据,特殊情况进行重试 scrapy如何实现大文件的下载?...当把get函数的stream参数设置成False时,它会立即开始下载文件放到内存中,如果文件过大,有可能导致内存不足。...iter_content:一块一块的遍历要下载的内容 iter_lines:一行一行的遍历要下载的内容 使用上面两个函数下载大文件可以防止占用过多的内存,因为每次只下载小部分数据。...总之,它们仅仅是分析库,可以在任何 Python 代码中被导入及使用。...我能在不创建 Scrapy 项目的情况下运行一个爬虫(spider)么? 是的。您可以使用 runspider 命令。

1.2K30

干货 | 27 个问题,告诉你 Python 为什么如此设计?

CPython 退出时为什么不释放所有内存? 当 Python 退出时,全局命名空间或 Python 模块引用的对象并不总是被释放。...如果存在循环引用,则可能发生这种情况 C 库分配的某些内存也是不可能释放的(例如像 Purify 这样的工具会抱怨这些内容)。但是,Python 在退出时清理内存尝试销毁每个对象。...采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 19. 字典如何在 CPython 中实现?...字典的哈希表实现使用键值计算的哈希值来查找键。如果键是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。但是,由于无论谁更改键对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。...此函数提供的可迭代列表中创建新列表,对其进行排序返回。例如,下面是如何迭代遍历字典并按 keys 排序: for key in sorted(mydict): ...

2.7K10

Python 核心设计理念27个问题及解答

CPython 退出时为什么不释放所有内存? 当 Python 退出时,全局命名空间或 Python 模块引用的对象并不总是被释放。...如果存在循环引用,则可能发生这种情况 C 库分配的某些内存也是不可能释放的(例如像 Purify 这样的工具会抱怨这些内容)。但是,Python 在退出时清理内存尝试销毁每个对象。...采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 19. 字典如何在 CPython 中实现?...字典的哈希表实现使用键值计算的哈希值来查找键。如果键是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。但是,由于无论谁更改键对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。...此函数提供的可迭代列表中创建新列表,对其进行排序返回。例如,下面是如何迭代遍历字典并按 keys 排序: for key in sorted(mydict): ...

3.3K21

27 个问题,告诉你Python为什么这么设计?

CPython退出时为什么不释放所有内存? 当Python退出时,全局命名空间或Python模块引用的对象并不总是被释放。...如果存在循环引用,则可能发生这种情况 C库分配的某些内存也是不可能释放的(例如像Purify这样的工具会抱怨这些内容)。但是,Python在退出时清理内存尝试销毁每个对象。...采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 字典如何在CPython中实现?...字典的哈希表实现使用键值计算的哈希值来查找键。如果键是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。但是,由于无论谁更改键对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。...此函数提供的可迭代列表中创建新列表,对其进行排序返回。例如,下面是如何迭代遍历字典并按keys排序: for key in sorted(mydict): ...

3.1K20

Python官方二十七问,你知道个啥?

CPython 退出时为什么不释放所有内存? 当 Python 退出时,全局命名空间或 Python 模块引用的对象并不总是被释放。...如果存在循环引用,则可能发生这种情况 C 库分配的某些内存也是不可能释放的(例如像 Purify 这样的工具会抱怨这些内容)。但是,Python 在退出时清理内存尝试销毁每个对象。...采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 19. 字典如何在 CPython 中实现?...字典的哈希表实现使用键值计算的哈希值来查找键。如果键是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。但是,由于无论谁更改键对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。...此函数提供的可迭代列表中创建新列表,对其进行排序返回。例如,下面是如何迭代遍历字典并按 keys 排序: for key in sorted(mydict): ...

2.5K20

干货 | 27 个问题,告诉你 Python 为什么如此设计?

CPython 退出时为什么不释放所有内存? 当 Python 退出时,全局命名空间或 Python 模块引用的对象并不总是被释放。...如果存在循环引用,则可能发生这种情况 C 库分配的某些内存也是不可能释放的(例如像 Purify 这样的工具会抱怨这些内容)。但是,Python 在退出时清理内存尝试销毁每个对象。...采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 19. 字典如何在 CPython 中实现?...字典的哈希表实现使用键值计算的哈希值来查找键。如果键是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。但是,由于无论谁更改键对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。...此函数提供的可迭代列表中创建新列表,对其进行排序返回。例如,下面是如何迭代遍历字典并按 keys 排序: for key in sorted(mydict): ...

2.6K20

【教程】宝塔面板安装 AList (非一键安装)

Fast大家庭,直到现在阿里推出的云盘,也好刚好Xhofe大佬开发了一个列表程序,今天我们就来讲一下如何在宝塔面板上搭建吧!...数据库:不创建 PHP版本:纯静态 2创建好后直接进入网站根目录,删除里面的404.html、index.html。...3去AList Release 下载对应系统的程序后端,上传至根目录解压。 PS也可以直接点击目录列表左上角的远程下载,URL添加下载地址。...max_files_count: 3000 #一次性最大文件数量 6获取refresh_token,登录云盘 7开开发者工具(F12),刷新页面,切换到Application选项卡,点开Local storage.../alist >log.log 2>&1 & 10宝塔面板 -> 软件商店 -> 搜索Supervisor管理器守护进程安装。 11设置Supervisor确定。

2.2K30

前端下载超大文件的完整方案

测试发现存一两个G左右数据到IndexedDB后,浏览器确实会内存占用过高导致退出 (我测试使用的是chrome103版本浏览器) 实现步骤 使用分片下载: 将大文件分割成多个小块进行下载,可以降低内存占用和网络传输中断的风险...这样可以避免一次性下载整个大文件造成的性能问题。 断点续传: 实现断点续传功能,即在下载中途中断后,可以已下载的部分继续下载,而不需要重新下载整个文件。...这些文件块可以暂时保存在内存中或者存储在客户端的本地存储( IndexedDB、LocalStorage 等)中。 一般情况下,为了避免占用过多的内存,推荐将文件块暂时保存在客户端的本地存储中。...这样可以确保在下载大文件时不会因为内存占用过多而导致性能问题。 在上面提供的示例代码中,文件块是暂时保存在一个数组中的,最终在mergeChunks()方法中将这些文件块合并成完整的文件。...索引和查询:如果你在 IndexedDB 中创建了大量索引或者执行复杂的查询操作,都会导致浏览器内存占用增加,特别是在处理大型数据集时。

45910

django之文件上传下载等相关

实现步骤: 1)创建项目Django_upload:django-admin startproject Django_upload;创建app:cd Django_upload;python manage.py...然后写文件使用FILE.chunks()方法,而不是使用read()方法,能确保大文件并不会占用系统过多的内存。FILE方法和属性下面介绍。 最后写一个url匹配就可以了: # ....通常,如果上传文件小于2.5MB,Django会把整个内容存到内存。这意味着,文件的保存仅仅涉及到内存读取和写到磁盘,所以非常快。...处理大文件时这会非常有用,因为这样可以把他们磁盘中读取出来,而避免将整个文件存到内存中。...1 python manage.py createsuperuser   根据提示进行创建。在app下admin.py中将需要上面创建的模型进行添加。

3.1K30

016:Scrapy使用中必须得会的问题

,通过管道的方式存入数据库 (2)缺点:基于 python 的爬虫框架,扩展性比较差 基于 twisted 框架,运行中的 exception 是不会干掉 reactor,并且异步框架出错后是不会停掉其他任务的...改变里面的url, method改变为POST,callback为self.parse_post,构建parse_post方法。 scrapy如何实现大文件的下载?...当使用requests的get下载大文件/数据时,建议使用使用stream模式。...当把get函数的stream参数设置成False时,它会立即开始下载文件放到内存中,如果文件过大,有可能导致内存不足。...iter_content:一块一块的遍历要下载的内容 iter_lines:一行一行的遍历要下载的内容 使用上面两个函数下载大文件可以防止占用过多的内存,因为每次只下载小部分数据。

1.4K10

数据上链的原则与方式

如果我们的大文件有上链的需求,可以采用哈希上链的方式,要么直接计算哈希值,然后将哈希上链,要么结合IPFS去中心化存储技术,将大文件存储到IPFS网络中,然后IPFS会给出一个特殊的哈希值,将该哈希值上链...一般系统日志如果开到DEBUG级别,每秒几千几万笔日志记录是很正常的,而且这些日志的价值信息很低,基本都是很细节的,冗余重复的日志。...区块链天然可用于构建价值网络,在区块链中可以很容易的支持通证(Token)的创建、流转、销毁等操作。...所有修改都会留痕,被审计,所有黑客攻击篡改行为和内部人员的数据修改行为都无所遁形。 三、数据上链的方式 1.原文上链。...3.哈希摘要上链。 这种主要用于文件上链的场景。前面说到,区块链不适合将大文件直接上链,而哈希算法可以将大文件计算出一个固定长度的摘要。

1.4K30

获取Top 10热门搜索关键词算法设计

假设,这最小字符串来自13.txt这个小文件,就再从该小文件取下一个字符串放入数组,重新比较大小,并且选择最小的放入合并后的大文件,并且将它从数组中删除。...依次类推,直到所有的文件中的数据都放入到大文件。 用数组存储从小文件中取出的字符串。每次数组取最小字符串,都需循环遍历整个数组,能更高效吗?...优先级队列,即堆: 将从小文件中取出的字符串放入小顶堆,则堆顶元素就是优先级队列的队首,即最小字符串 将这个字符串放入大文件,并将其堆中删除 再从小文件中取出下一个字符串,放入到堆 循环该过程,即可将...定时器每过一个单位时间(1s),就扫描一遍任务,看是否有任务到达设定执行时间。...因为相同数据经哈希算法后的哈希值相同,可将10亿条搜索关键词先通过哈希算法分片到10个文件: 创建10个空文件:00~09 遍历这10亿个关键词,通过某哈希算法求哈希哈希值同10取模,结果就是该搜索关键词应被分到的文件编号

1.9K30
领券