首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
在考古的菜鸡很热情
门头沟学院 测试工程师
发布于陕西
关注
已关注
取消关注
@BAT后端川哥:
阿里云 暑期实习面经 三面|讲解|0305
前面讲解过该同学阿里云的一面讲解和二面讲解,这是第三面的,继续给大家做讲解分析,参考回答和学习资料指引,联合起来,参考意义很大,期望大家有所收获~这篇文章主要考察点:海量数据场景题+操作系统+计算机网络+数据库原贴链接感谢这位同学分享!!!开始吧~~1.场景题:不考虑系统限制,如何快速在大量字符串中统计出现次数前10的字符串?如果考虑内存限制,应该采取什么措施在海量数据中进行统计?解析::属于海量数据面试题之一,系统学习推荐资料,掌握常用的分析处理方法,例如分治,外排序等方法,这些问题基本问不住你~~参考回答:无限内存hash_map统计先对这批海量数据预处理。具体方法是:维护一个Key为字符串,Value为该Query出现次数的hash_map,即hash_map(KeyStr, Value),每次读取一个KeyStr,如果该字串不在Table中,那么加入该字串,并将Value值设为1;如果该字串在Table中,那么将该字串的计数加1 即可。最终我们在O(N)的时间复杂度内用hash_map完成了统计;堆排序借助堆这个数据结构,找出Top K,时间复杂度为N‘logK。即借助堆结构,我们可以在log量级的时间内查找和调整/移动。因此,维护一个K(该题目中是10)大小的小根堆,然后遍历hash_map,分别和根元素进行对比。所以,我们最终的时间复杂度是:O(n) + N' * O(logk),其中,N’为300万中不同的String个数,即hash_map中Key的个数。有限内存这一类问题中,限制内存的面试题才是更常见的,解法也是。1.分而治之/hash映射:首先把所有字符串,采用Hash映射的方法,比如%1000,把整个大文件映射为1000个小文件(目标是拆分到每个小文件大小可以装入内存)。2.hash_map统计 + 堆排序针对每个小文件,采用上面不限内存的方式,统计出每个小文件的Top103.合并小文件结果讲1000个文件的Top10取出,一共1万个元素,再用一次堆排序,取出这1万个中的Top10, 即最终结果。学习指引:系统学习这篇文章,类似海量数据面试题问不住你~~系统学习:《后端海量数据面试题讲解-01分治》|第1题|第2题2.场景题:设计实现一个高可用、高并发的系统,讲讲有哪些需要注意的地方?对于突发的大流量有哪些处理方法?热点数据有哪些处理方法?解析::笼统的答一下就行,面试官会细问你,再详细回答。参考回答:注意的地方:设计实现一个高可用、高并发的系统时,需要注意的关键点包括:采用微服务架构和负载均衡确保系统的可扩展性和故障隔离;实现数据库读写分离、分库分表以及合理使用缓存来优化数据存储和访问性能;利用异步处理和消息队列提高系统吞吐量;强化安全性设计,包括身份验证、授权和数据加密;建立完善的监控和告警机制,以及时发现和解决性能瓶颈;通过容器化部署和自动扩缩容实现弹性伸缩;同时,容错和恢复策略的制定,以及充分的功能、压力和安全测试都是确保系统高可用和高并发的重要环节。突发大流量:应首先确保系统架构具备水平扩展能力,利用负载均衡技术分散请求压力;同时,结合缓存策略,将热点数据缓存至高性能存储中,减少对后端服务的冲击;若流量仍超出处理能力,可启用限流机制保护核心资源,并通过降级非关键服务维持整体稳定;此外,监控系统需实时检测流量变化,自动触发扩展资源以应对峰值。热点数据处理:缓存优化:为了缓解数据库的压力,我们应该将热点数据缓存起来。使用高性能的缓存系统,如Redis或Memcached,可以将这些数据存储在内存中,从而大幅度减少对数据库的访问。通过合理的缓存策略,如基于访问频率的动态缓存、缓存预热等,可以进一步提高缓存的命中率和效果。数据库优化:数据库的优化也是处理热点数据的关键环节。对于读多写少的热点数据,可以考虑使用读写分离的策略,将读操作和写操作分散到不同的数据库服务器上,以提高并发处理能力。同时,通过数据库分片技术,可以将数据水平分割到多个数据库服务器上,每个服务器只处理一部分数据,进一步分散存储和访问压力。学习指引:系统学习:《网课:高并发系统设计40问》3.Redis:为什么redis是单线程但速度依旧很快?解析::redis高频面试题之一参考回答:Redis速度快的原因主要有以下几点:首先,Redis是一个内存数据库,所有的数据都存储在内存中,这大大减少了磁盘I/O的延迟,使得数据读写速度非常快;其次,Redis使用单线程模型,避免了线程切换和锁竞争等开销,能够更高效地利用CPU资源;此外,Redis提供了多种高效的数据结构,如字符串、哈希表、列表、集合等,这些数据结构都经过了高度优化,能够实现快速的读写操作;最后,Redis还使用了异步I/O模型,能够同时处理多个并发请求,提高了系统的吞吐量。这些因素共同作用,使得Redis在处理大量读写请求时表现出色,成为了一个高性能的键值数据库。学习指引面试学习:《小林 Coding》|图解Redis|Redis 采用单线程为什么还这么快?4.操作系统:介绍下IO多路复用?select、poll和epoll各自的区别?解析::操作系统高频考题,重点掌握参考回答:是什么?IO多路复用是一种在操作系统中用于处理多个输入/输出流的技术,它允许单个进程或线程同时监控多个文件描述符,以确定它们中的哪些可以进行非阻塞的读/写操作,从而提高系统对并发IO请求的处理效率。这项技术广泛应用于构建高性能、高并发的网络服务器。select、poll和epoll各自的区别?select:select是早期Unix系统上的IO多路复用技术,它使用一个位图来表示文件描述符集合,并允许程序同时监控这些描述符的读/写状态。然而,select存在两个主要问题:一是它所能监控的文件描述符数量受限于FD_SETSIZE(通常为1024);二是每次调用select时,都需要传递并处理整个文件描述符集合,这在描述符数量较多时效率较低。poll:poll解决了select中文件描述符数量限制的问题,它使用一个数组来存储文件描述符及其对应的事件,因此可以支持更多的描述符。与select类似,poll也采用轮询的方式检查描述符的状态,但它在处理大量描述符时比select更高效,因为poll不需要像select那样在调用前后重新设置文件描述符集合。epoll:epoll是Linux特有的IO多路复用技术,与select和poll不同,它使用基于事件驱动的方式来工作。epoll通过注册感兴趣的事件到文件描述符上,并在这些事件发生时接收通知,从而避免了轮询的开销。此外,epoll还支持水平触发和边缘触发两种模式,提供了更大的灵活性。在高并发场景下,epoll通常比select和poll具有更好的性能表现。学习指引:面试学习:《小林coding》|图解系统|I/O 多路复用5.操作系统:磁盘快照有了解吗?介绍下COW和ROW?解析::了解。虽然是个操作系统问题,但是Redis的RDB持久化其实就有用到COW(写时复制)技术。参考回答:磁盘快照:磁盘快照是一种创建文件系统或卷在某个特定时间点的只读副本的技术。它允许用户在不影响原始数据的情况下访问、备份或恢复数据。快照通常用于数据保护、恢复和备份场景,可以迅速创建并占用较少的存储空间。COW(写时复制):COW是“写时复制”的缩写,是一种实现磁盘快照的技术。在使用COW时,原始数据块在修改之前不会被覆盖,而是将修改的数据块复制到新的位置,并更新文件系统的元数据以指向新的数据块。这样,快照可以继续访问原始数据块,而修改则反映在新的数据块上。COW技术提高了快照创建和管理的效率,因为快照和原始数据可以共享相同的数据块,直到发生修改为止。ROW(写时重定向):ROW是“写时重定向”的缩写,是另一种实现磁盘快照的技术。与COW不同,在使用ROW时,当原始数据块需要修改时,修改会被重定向到新的位置,并且文件系统的元数据会更新以反映这种重定向。然而,与COW不同的是,ROW通常保留原始数据块的副本以供快照使用,而不是共享数据块。这意味着每个修改都会导致新的数据块被分配和写入,这可能会增加存储空间的消耗。学习指引:存储快照-COW和ROW6.操作系统:进程、线程和协程各自的作用和区别?进程和线程的组成?解析::操作系统,简单且“最”常考面试题。必须掌握参考回答:进程、线程和协程区别?进程是操作系统资源分配的基本单位,它包含了正在运行的程序的所有状态信息,如代码、数据、系统资源和线程等。每个进程都有独立的内存空间和系统资源,相互之间互不干扰,保证了系统的稳定性和安全性。但是,进程间的切换和通信需要较大的开销。线程是进程内的执行单元,共享同一个进程的内存空间和资源,如文件句柄、信号量等。线程间的切换和通信比进程更快,因为它们共享同一地址空间。但是,线程没有独立的地址空间,一个线程的崩溃可能会影响整个进程。协程是一种更轻量级的线程,也被称为微线程。它们完全在用户态下执行,不需要内核的参与,因此切换开销更小。协程可以由程序自身控制调度,实现非抢占式的多任务处理。进程和线程的组成?进程的组成:进程主要由三部分组成:程序代码(即指令序列)、相关数据(包括变量、缓冲区、文件等)以及进程控制块(PCB)。其中,进程控制块是用于描述系统进程状态的关键数据结构,它包含了进程ID、进程状态、内存指针、文件描述符表、信号处理函数等重要信息。线程的组成:线程是进程内的一个执行单元,其组成通常包括线程ID、当前指令指针(PC)、寄存器集合(用于保存线程上下文)、堆栈(用于函数调用和局部变量存储)以及线程控制块(TCB,类似于进程中的PCB,但更轻量级)。线程共享其所属进程的内存空间和部分资源,如文件句柄和信号量等,这使得线程间的数据交互变得容易,但同时也增加了同步和互斥的复杂性。学习指引:《小林coding》|图解系统|进成线程基础知识7.操作系统:CPU数量为1的进程执行死循环会发生什么?如何解决?参考回答:在Linux系统中,如果某个进程出现死循环,其本身的运行会受到影响,但不会直接导致其他进程的运行受阻。这是因为Linux系统采用了多任务调度的机制,每个进程都有自己的时间片,通过轮转的方式依次分配给各个进程。当某个进程出现死循环时,它会占用自己分配到的时间片,导致其他进程在该时间片内无法执行。但是,当时间片轮转到其他进程时,它们仍然可以正常运行。然而,死循环可能会导致系统的整体性能下降。因为死循环会消耗CPU的资源,导致其他进程无法充分利用CPU进行运算。如果死循环的进程是一个重要的系统进程,其消耗过多的CPU资源可能会导致系统响应变慢,甚至出现卡顿的情况。此外,如果死循环的进程还涉及到资源的竞争,如文件、网络连接等,可能会对其他进程的正常运行产生影响。如何解决?杀死进程:通过操作系统的任务管理器或命令行工具,可以强制终止执行死循环的进程。这通常是最直接和有效的方法。调试和修复:如果可能的话,应该对导致死循环的代码进行调试和修复。通过检查循环条件和逻辑,找出问题所在,并进行相应的修改。资源限制:操作系统可以提供一些机制来限制进程对CPU的占用,如设置进程优先级、使用CPU配额或限制进程的CPU使用时间。这些措施可以在一定程度上减轻死循环对系统的影响。系统监控:实施系统监控和日志记录,以便及时发现并处理死循环等异常情况。这有助于提高系统的可维护性和可靠性。多核或多CPU环境:虽然问题是关于单CPU系统的,但将系统升级到具有多个核心或CPU的环境可以提供更高的并发处理能力。这样,即使一个进程陷入死循环,其他进程仍然可以在其他核心或CPU上正常运行。学习指引:了解学习:如何快速定位死循环8.计算机网络:有哪些网络攻击方式?在项目中针对可能的网络攻击采取了哪些相应的防范措施?解析::需要掌握一些常见的网络攻击方式,然后按照自己的理解,简单描述就行。参考回答:网络攻击方式多种多样,常见的包括拒绝服务攻击(DoS/DDoS),通过大量请求耗尽目标系统资源;SQL注入攻击,利用恶意SQL代码绕过身份验证;跨站脚本攻击(XSS),注入恶意脚本窃取用户信息。在项目中,我们采取了多种防范措施来应对这些攻击,例如实施防火墙和入侵检测系统来抵御DoS/DDoS攻击,使用参数化查询和预编译语句防止SQL注入,以及对用户输入进行严格的验证和过滤来防范XSS攻击。学习指引:面试学习:《JavaGuide》| 网络攻击常见手段总结9.计算机网络:cookie、session和token的区别?各自的使用场景?解析::计算机网络重点考题之一,后端真实项目中也会频繁涉及相关知识,所以不管从面试还是工作来说,都需要掌握参考回答:Cookie是由服务器发送到用户浏览器并存储在客户端的小段数据。它通常用于识别用户并保持会话状态。然而,由于Cookie存储在客户端,存在安全风险,如跨站请求伪造(CSRF)和跨站脚本攻击(XSS)。因此,它们适用于非敏感信息的短期存储,如用户偏好或购物车内容。Session是在服务器端创建并维护的用户会话信息。与Cookie不同,Session数据存储在服务器端,并通过唯一的会话标识符(通常存储在Cookie中)与用户关联。这提供了更高的安全性,因为敏感数据不会传输到客户端。Session适用于需要维护用户状态和进行身份验证的Web应用程序,如登录状态和用户个人资料。Token是一种身份验证和授权机制,通常用于API和微服务之间的通信。与Cookie和Session不同,Token是无状态的,意味着服务器不需要维护用户会话信息。相反,客户端在每次请求时附带Token,服务器验证其有效性并授权访问资源。Token的主要优势在于其可扩展性和跨域能力,适用于分布式系统和跨多个应用程序的身份验证。常见的Token类型包括JWT(JSON Web Token),它们包含用户的身份信息和授权声明,并可以用于单点登录(SSO)和微服务之间的安全通信。学习指引:一文搞懂:《掘金博客》|傻傻分不清之 Cookie、Session、Token、JWT10.数据库:项目中使用了NoSQL和MySQL,说说NoSQL和关系数据库的区别?解析::可以从存储方式,扩展性,一致性,应用场景等几个方面来回答参考回答:存储方式:NoSQL数据库通常采用键值对、文档、宽列存储或图结构等非关系型数据模型,而关系数据库则使用表格形式来存储数据,具有严格的模式和结构。这种差异使得NoSQL数据库在处理非结构化或半结构化数据时更加灵活。扩展性方面: NoSQL数据库通常设计为易于水平扩展的,即通过增加更多的服务器来增加数据库的容量和性能。而关系数据库虽然也可以进行扩展,但通常更倾向于垂直扩展,即通过提升单个服务器的性能来增强数据库的处理能力。这使得NoSQL数据库在处理大量数据时更具优势。一致性:另外,NoSQL数据库通常不遵循ACID(原子性、一致性、隔离性、持久性)原则,而是在可用性和一致性之间做出了权衡。这意味着在某些情况下,NoSQL数据库可能会牺牲数据的一致性来保证系统的可用性和响应速度。而关系数据库则严格遵守ACID原则,确保数据的完整性和一致性。应用场景上:: NoSQL数据库更适合处理海量数据、高并发读写、对数据一致性要求不那么严格的场景,如社交网络、实时分析等。而关系数据库则更适合处理结构化数据、需要复杂查询和事务处理的场景,如银行、企业资源规划等。学习指引:《知乎》|关系型数据库 VS 非关系型数据库本文也是热门面经讲解》专栏 系列文章之一,文末尾有专栏链接,大家可以点个关注,我会持续更新~~
点赞 32
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 17:57
网易游戏_客户端研发工程师(准入职员工)
网易互娱内推
岗位:我比较幸运,进的组压力不算大,朝十晚六,每个月有餐补,吃饭基本不花钱,免费班车,时不时有下午茶。工作的内容也很有成就感,学到了好多东西哈哈哈 总的来说非常建议在网易实习哦(因为我的mentor和组内氛围很不错,仅代表个人意见哦,不要杠我hhh) 如何成为一名网易实习生 最好的办法当然是在官网选好心仪的职位然后找内部员工内推!我就是内推进来的,大家也可以找我~ 我是凭内推进入了网易和字节跳动的面试哦~ 同学们如果想让自己简历快点被查看,大大提高成功率,可以用内推的方法,也就是把简历交给内部人员,用内推系统帮你投递~网易游戏(互娱)2026届校园招聘启动啦内推福利推荐(仅限第一志愿)直通笔试...
字节跳动公司福利 1028人发布
点赞
评论
收藏
分享
07-26 14:23
深圳大学 运营
财务实习极限二选一
👋个人背景:双非会计26届👏offer1:深圳努比亚公司,百人规模,是中兴通讯的子公司,主营3c数码业务,工作内容是费用报销,合同审核,后续可能接触报表。去公司面谈后感觉公司氛围还不错,据说正式工离职率很低,不过不一定有转正机会。每月前三天如果是周末就要加班,只能调休。💯offer2:珠海东电化公司,是有千人规模的外企,主营电子元件制造,工作内容是固定资产,废料回收,成本核算,据说偏管理会计,工作需要处理英文邮件,每周两次实地盘点。感觉管理很规范,面试官很专业,但是从面试官的描述来看大概率没有转正机会。🌱目前我是打算参加秋招直接就业的,实习还是以锻炼能力为主,也想通过实习在秋招找到更好...
如果可以选,你最想去哪家...
点赞
评论
收藏
分享
07-01 18:39
已编辑
门头沟学院 Java
这是白嫖吗
招的Java,前后端都要,还要白嫖??
我的求职精神状态
点赞
评论
收藏
分享
06-21 01:03
门头沟学院 Java
家人们,梦彻底醒了
双非一本,大三下了,今天第一次面试,项目是编的,一问直接露馅了,昨天开始背的八股文,今天全忘了,大学三年确实是玩爽了,今天面试完彻底觉悟了,现在目标秋招了,暑期实习是指望不上了,兄弟们有没有好的建议,本人孙吧七年吧龄,请狠狠压力我,我都能听得进去的
ano_soyori...:
把孙吧吧龄写简历上哪个面试官都要高看你一眼
还记得你第一次面试吗?
点赞
评论
收藏
分享
07-31 16:02
韶音科技_产品经理(准入职员工)
韶音科技内推
2024-06-08,投递简历:提前批-机械结构工程师2024-06-30,专业笔试:使用的牛客题库,20道选择题+2道简答题,考察范围包括机设、机原、材料、力学、工艺等2024-07-24,HR面试邀约2024-08-02,HR面试,腾讯会议,约20min。面试流程如下: 1. 自我介绍 2. 人事问答: (1)你的研究方向?你们课题组的研究方向有哪些? (2)分工? (3)项目简述:项目背景?解决什么问题?你做了哪些工作?结构怎样设计的?工作过程中有探索性学习?动手实践吗?项目进展? (4)实验室有多少人? (5)博士有吗? (6)做项目会有...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
都是 dirty work,为什么别人的简历上就能言之有物🤔
2.1W
2
...
虾皮秋招一面
4397
3
...
虾皮后端一面(已挂)
4370
4
...
百度提前批,三面被推迟一周,喜提秋招第一凉
3758
5
...
7.30滴滴提前批一面凉经
3478
6
...
百度提前批 三面
3329
7
...
干活最少的实习生因为长得漂亮转正了
3075
8
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
2923
9
...
7.30百度提前批一面
2580
10
...
QQ提前批一面凉经
2573
创作者周榜
更多
正在热议
更多
#
你遇到最难的面试题目是_
#
15335次浏览
193人参与
#
反问环节如何提问
#
95576次浏览
1951人参与
#
中兴秋招
#
203941次浏览
2282人参与
#
简历上的经历如何包装
#
24687次浏览
730人参与
#
如何看待offer收割机的行为
#
815691次浏览
6088人参与
#
你最讨厌面试问你什么?
#
25383次浏览
286人参与
#
秋招最大的收获是什么?
#
38652次浏览
323人参与
#
我的实习收获
#
90943次浏览
1039人参与
#
26届的你,投了哪些公司?
#
37521次浏览
433人参与
#
滴滴求职进展汇总
#
233389次浏览
2116人参与
#
作业帮求职进展汇总
#
57037次浏览
376人参与
#
初创公司值得加入吗?
#
27356次浏览
194人参与
#
我对___祛魅了
#
43773次浏览
410人参与
#
数字马力求职进展汇总
#
184479次浏览
1500人参与
#
你跟室友的关系怎么样?
#
6165次浏览
94人参与
#
什么样的背景能拿SSP?
#
31856次浏览
205人参与
#
工作中哪个瞬间让你想离职
#
60866次浏览
548人参与
#
和同事相处最忌讳的是__
#
21405次浏览
217人参与
#
去年你投递实习了吗?
#
22894次浏览
331人参与
#
如何快速融入团队?
#
15032次浏览
182人参与
#
机械人的金三校招总结
#
36275次浏览
461人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务