首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客843852904号
北京邮电大学 C工程师
发布于北京
关注
已关注
取消关注
@BAT后端川哥:
阿里云 实习面经(已OC) 一面面经|讲解
挑选了一篇牛客上的面经给大家做讲解分析和学习指引,期望对大家有所帮助~原贴链接1. Java相关:String为什么是不可变的?解析::注意:很多资料直接说"String 类中使用 final 关键字修饰字符数组来保存字符串,所以String 对象是不可变的" 这是不准确的,因为 final修饰的Array数组 value 是不可变,也只是value这个“引用地址”不可变。挡不住Array数组是可变的事实,其实“私有 pribvate”可能也是不可变的重要原因之一参考回答:1.保存字符串的数组被 final 修饰且为私有的,并且String 类没有提供/暴露修改这个字符串的方法。2.String 类被 final 修饰导致其不能被继承,进而避免了子类破坏 String 不可变。学习指引:面试题解析:String 为什么不可变?2. Java相关:String、StringBuffer和StringBuilder的区别?解析::可以从:可变性,线程安全,性能三个方面来进行说明参考回答:可变性:String 是不可变的(后面会详细分析原因)。StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串,不过没有使用 final 和 private 关键字修饰,最关键的是这个 AbstractStringBuilder 类还提供了很多修改字符串的方法比如 append 方法。线程安全性 :String中的对象是不可变的,也就可以理解为常量,线程安全。AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共父类,定义了一些字符串的基本操作,如 expandCapacity、append、insert、indexOf 等公共方法。StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。性能差异:每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象。StringBuffer 每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。相同情况下使用 StringBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。学习指引:面试题解析:String、StringBuffer和StringBuilder的区别?3.Java相关:在循环内使用“+”进行字符串拼接的话会有什么问题?解析::属于Java String相关常考面试题之一,需要掌握参考回答:字符串对象通过“+”的字符串拼接方式,实际上是通过 StringBuilder 调用 append() 方法实现的,拼接完成之后调用 toString() 得到一个 String 对象 。不过,在循环内使用“+”进行字符串的拼接的话,存在比较明显的缺陷:编译器不会创建单个 StringBuilder 以复用,会导致创建过多的 StringBuilder 对象。扩展:不过,使用 “+” 进行字符串拼接会产生大量的临时对象的问题在 JDK9 中得到了解决。在 JDK9 当中,字符串相加 “+” 改为了用动态方法 makeConcatWithConstants() 来实现,而不是大量的 StringBuilder 了.学习指引:面试题解析:字符串拼接用“+” 还是 StringBuilder?4.JVM相关:堆空间的结构?分配策略有哪些?解析::JVM面试4重点+1了解:内存区域划分,垃圾回收机制,内存分配策略,类加载机制;类文件结构(了解)。建议大家理解记忆相关内容后,按照自己的话来输出。因为涉及内容挺多,我们可以按照自己的理解笼统回答下,等面试官来细问。参考回答:堆空间是JVM中用于存储对象实例的区域,它通常被划分为新生代和老年代两个主要部分,其中新生代又包括Eden区和两个Survivor区。分配策略:1.对象优先在Eden区分配 2.大对象直接进入老年代 3.长期存活的对象将进入老年代 4.动态对象年龄判定 5.空间分配担保等学习指引:经典书籍《深入理解Java虚拟机 第三版》|2.2.4 java堆|3.8 内存分配与回收策略5.JVM相关:Minor GC和Full GC的区别?解析::JVM 重要概念和知识点,需要整体掌握。参考回答:Minor GC主要发生在新生代(Young Generation)中,负责清理不再存活的对象,通常采用复制算法,速度较快且频繁。而Full GC则发生在整个堆空间中,包括新生代和老年代(Old Generation),用于清理整个堆中的垃圾对象,速度较慢且可能导致较大的应用停顿。因此,Minor GC和Full GC的主要区别在于它们发生的区域和影响范围。学习指引:Java Minor GC、Major GC和Full GC之间的区别6. Linux相关:文件的概念?文件有哪些类型?各自的作用是什么?解析::文件类型很多,能回答几种常见的就行,例如普通文件,目录文件,块设备文件,套接字文件。参考回答:1.普通文件(-):这是最常见的文件类型,包括纯文本文件、二进制文件、数据文件等。它们不包含文件系统的结构信息,只是用户所接触到的文件。例如,.c文件、可执行的二进制文件等都是普通文件。2.目录文件(d):目录文件是用于存放文件名及其相关信息的文件。它们可以包含下一级文件目录或普通文件,是内核组织文件系统的基本节点。通过目录文件,用户可以轻松地浏览和管理文件系统。3.字符设备文件(c):这类文件提供了对设备不带缓冲区的访问,每次访问长度可变。它们通常用于表示系统中的字符设备,如控制台、串口等。4.块设备文件(b):块设备文件提供对设备(如磁盘)带缓冲的访问,每次访问以固定的长度单位进行。它们用于表示系统中的块设备,如硬盘、U盘等。5.FIFO(p):FIFO文件也称为命名管道,用于进程间的通信。它们允许一个进程向另一个进程发送数据,而不需要通过中间的文件或网络连接。6.套接字(s):套接字文件用于进程间的网络通信。它们提供了一种在不同进程之间传输数据的方式,通常用于实现网络服务和客户端之间的通信。7.链接文件(l):链接文件是指向另一个文件的指针。它们可以分为硬链接和符号链接两种。硬链接指向文件的inode节点,而符号链接则指向另一个文件的路径名。通过链接文件,用户可以方便地访问其他文件或目录。除了以上七种常见的文件类型外,Linux系统中还有其他一些特殊的文件类型,如特殊文件、门文件等,但这些类型在日常使用中相对较少见。学习指引:推荐学习:小林 coding|图解系统|文件系统7. Linux相关:inode的作用?inode包含哪些内容?给出一个文件名,Linux是如何根据该文件名打开文件的?(文件名->inode->block)文件的访问时间是如何记录的?解析::考察linux文件系统相关问题,比较细,推荐大家系统学习后理解掌握参考回答:1.inode的作用?:inode,即索引节点,在Linux文件系统中用于存储文件或目录的元数据信息。它是文件系统的一个基本组成部分,允许系统通过inode号而非完整的文件路径快速访问到文件数据。2.inode包含哪些内容?:inode包含文件的元数据信息,如文件大小、文件所有者、文件权限、文件类型、文件的创建/访问/修改时间等。此外,inode还包含指向文件数据块的指针,这些指针指示了文件内容在磁盘上的实际存储位置。3.给出一个文件名,Linux是如何根据该文件名打开文件的?(文件名->inode->block):当给出一个文件名时,Linux首先会根据文件路径在目录结构中查找该文件对应的目录项。目录项中包含了文件的inode号。然后,系统会使用这个inode号在文件系统中找到对应的inode结构。一旦找到inode,系统就可以通过inode中的指针找到文件数据所在的磁盘块(block)。最后,系统将这些磁盘块加载到内存中,从而打开并访问文件。4.文件的访问时间是如何记录的?:文件的访问时间是通过inode中的访问时间戳(atime)来记录的。每当文件被读取时,其inode中的atime就会被更新为当前时间。这个机制允许系统跟踪文件的访问历史,以便进行各种管理和维护操作。需要注意的是,为了优化性能,某些文件系统可能会延迟更新atime或仅在文件内容实际被读取时更新它。学习指引:推荐学习:小林 coding|图解系统|文件系统8. 零拷贝是什么?用来解决什么问题?有哪些应用场景?实现方式有哪些?解析::参考回答:1.是什么?:零拷贝是一种IO操作优化技术,旨在减少数据在内核空间和用户空间之间的冗余拷贝,从而解放CPU、减少上下文切换并降低系统资源消耗。它主要用来解决传统IO操作中不必要的数据拷贝问题,提高数据传输效率。2.应用场景:零拷贝技术广泛应用于需要高性能数据传输的场景,如网络传输、文件传输、数据库操作等。在这些场景中,大量的数据需要在内核空间和用户空间之间传输,传统的IO操作会导致不必要的数据拷贝和性能损失。3.实现方式有哪些?:实现零拷贝的方式主要有mmap、sendfile、splice和tee等。其中,mmap通过内存映射将内核缓冲区与用户空间共享,避免了数据拷贝;sendfile直接将数据从内核缓冲区发送到网络缓冲区,减少了CPU拷贝;splice和tee则在内核空间内实现数据的传输和复制,避免了用户空间的参与。这些技术根据具体的应用场景和需求选择使用,可以有效地提高数据传输效率和系统性能。学习指引:图解系统:什么是零拷贝?如何实现零拷贝?9.Linux相关:压缩和解压使用的命令?相关参数的作用?解析::考察Linux常用命令,大家需要掌握一些;参考回答:压缩命令tar:该命令用于将多个文件或目录打包成一个文件,也可以同时对其进行压缩。常用的参数有:-c:创建新的压缩文件。-v:显示详细的压缩过程。-f:指定压缩文件的名称。-z:使用gzip压缩算法进行压缩。-j:使用bzip2压缩算法进行压缩。-J:使用xz压缩算法进行压缩。解压命令:tar:该命令不仅可以用于压缩,也可以用于解压。解压时常用的参数有:-x:从压缩文件中提取文件或目录。-v:显示详细的解压过程。-f:指定要解压的压缩文件名称。-z:解压使用gzip压缩算法的文件。-j:解压使用bzip2压缩算法的文件。-J:解压使用xz压缩算法的文件。例如,要解压doc.tar.gz到当前目录,可以使用命令tar -xzvf doc.tar.gz。学习指引:面试常考21条Linux命令一周学会Linux10. 网络相关:TCP 和 UDP 可以使用同一个端口吗?解析:考察计算机网络基础知识,TCP 和 UDP都是重点。大家需要系统学习并掌握。参考回答:TCP和UDP可以使用相同的端口号。TCP和UDP的协议相互独立,所以他们的端口号也相互独立,即使相同也不会相互冲突。这主要是因为,当一个主机收到数据包后,系统可以根据IP包头的协议号字段判断该数据包是TCP还是UDP,然后将其送到相应的模块进行处理。而在同一个协议内部,端口号必须是唯一的,以区分不同的应用程序。但在不同的协议之间,如TCP和UDP,由于它们各自维护自己的端口号和连接状态,所以相同的端口号可以同时被TCP和UDP使用,而不会引发冲突。学习指引:面试题解析:TCP 和 UDP 可以使用同一个端口吗?11. 网络相关:三次握手与四次挥手流程?TIME_WAIT出现在什么时候?要等待多久?(2MSL)为什么要等待这么久?解析::计算机网络重点面试题,每个同学都该首要掌握。参考回答:三次握手流程:1.SYN:客户端向服务器发送连接请求报文段。该报文段中包含自身的数据通信初始序号。请求发送后,客户端便进入SYN-SENT状态。2.SYN+ACK:服务器收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通信初始序号,发送完毕后,服务器进入SYN-RECEIVED状态。3.ACK:客户端收到服务器的SYN+ACK应答后,还要发送一个应答,发送完数据后,客户端和服务器都进入ESTABLISHED状态,完成TCP三次握手。当连接建立后,就可以开始进行数据传输了。四次挥手流程:1.FIN:当数据传输完成后,客户端向服务器发送连接释放报文段,并停止发送数据。此时客户端进入FIN-WAIT-1状态。2.ACK:服务器收到客户端的连接释放报文段后,会发送确认报文段,此时服务器进入CLOSE-WAIT状态,客户端接收到服务器的确认后,进入FIN-WAIT-2状态。3.FIN:服务器完成数据发送后,会向客户端发送连接释放报文段,此时服务器进入LAST-ACK状态。4.ACK:客户端收到服务器的连接释放报文段后,会发送确认报文段,并进入TIME-WAIT状态。服务器收到确认后,就关闭了连接,而如果客户端在一段时间内没有收到服务器的任何数据,也会关闭连接。TIME_WAIT出现在四次挥手的最后一个阶段,也就是客户端发送了最后的确认报文段后,会进入TIME-WAIT状态。这个状态会持续一段时间,通常是2MSL(Maximum Segment Lifetime),也就是两倍的最大报文段生存时间。为什么要等待这么久?1.确保最后一个ACK报文段能够到达服务器:客户端发送了最后的ACK报文段后,这个报文段可能因为网络原因在网络中滞留一段时间才能到达服务器。如果客户端立刻关闭连接,那么服务器可能无法收到这个ACK报文段,这会导致服务器无法正确关闭连接。因此,客户端需要等待一段时间,确保服务器能够收到这个ACK报文段。2.防止“已失效的连接请求报文段”出现在本连接中:客户端在发送完最后一个ACK报文段后,会等待一段时间,这段时间足以让本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以避免在新的连接中出现旧的连接请求报文段,从而保证了TCP连接的可靠性。学习指引:推荐重点掌握三次握手,四次挥手相关面试题|系列往期相关文章推荐阅读某跨境电商独角兽Java实习面经|讲解后面还会持续产出热门面经讲解系列文章,点个关注,来个赞呗。文中学习指引提到的提到的经典书籍,师兄我也有电子版,需要的同学可以私信我,可免费提供。其他学习指引相关问题也可以咨询我。
点赞 81
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
03-27 17:08
手握5个offer却不知道选哪个?我用这5个维度,做出了不后悔的决定
拿到多个offer是幸福的烦恼,但选错了可能影响未来3-5年。这篇把offer选择的决策框架完整拆解,帮你做出理性决策。 📦 开始之前:我准备了哪些东西 offer选择是重大决策,需要工具和方法。先列一下我做offer选择时用到的核心物料: 工具/资料 用途 备注 offer信息表 汇总所有offer的关键信息 用飞书多维表格或Excel 决策评分表 按维度给每个offer打分 量化决策,避免感性 求职精灵(finsight.work) 查公司信息、看面经了解团队 辅助判断 牛客网 看公司评价、团队氛围 真实员工反馈 脉脉 了解公司内部情况 匿名但信息丰富 ...
offer帮选
点赞
评论
收藏
分享
昨天 10:38
门头沟学院 Java
有滴滴26届校招生群吗
有滴滴26届校招生群吗,base杭州
点赞
评论
收藏
分享
03-21 12:42
东莞理工学院 golang
求问,GO后端,ACM金牌,这个简历能进大厂暑期吗
如题,本人双非学院本,大一大二的时候主要在打ACM。但是怕只打ACM找不到工作,大二也开始学开发。大三上边实习还边打比赛,但是圆梦ACM亚洲区域赛金牌了。然后我信息差比较封闭,加上前面打比赛也没什么时间。所以项目就是一个练手项目,想写技术亮点都不知道写啥。后面也没时间做一个新项目。实习也是初创公司。感觉项目经历和实习经历都拉完了。然后也是寒假才了解到暑期实习,然后花了一两周从零开始背八股,刷面经。然后面了腾讯WXG还是有些八股遗漏了,还有被吐槽项目没深度,一面直接挂了。现在感觉好焦虑,感觉ACM金牌好像作用并不大。不知道还能不能找大厂暑期,不行的话要先找中小厂沉淀吗,或者加急一个星期赶出个比较好的Agent项目然后继续投,还是说不如直接去信奥赛教培行业了。考研走算法岗的路线就算了,偏科太严重了也不擅长考试。好迷茫啊,感觉卷不动了。
zhangwanse...:
赶个Agent的项目出来,再去投,应该稳的很
点赞
评论
收藏
分享
03-07 11:05
渭南师范学院 Java
别乱了自己
寒假4场线上面试都黄了。开学返校,千里迢迢,路程25h。到校就是打扫卫生,整理杂物。第二天满课,有事没午休,晚上睡觉漏风着凉,终于是把自己累感冒了。结果感冒了才想起来自己还有一个一面测试题没写,但是昏昏沉沉看不下去;又想到今天boss还没投满150,得赶紧投完;之后又想起自己还没看课学习......焦虑,急躁,颓废,厌恶......各种情绪交织,终于接受了。谁让自己高考前想得太多,井底之蛙,没有想学习的心呢;谁让自己大一什么寻找幸福的意义,加入学生会和社管,忙成陀螺拿奖学金呢;谁让自己大二开始摆烂陷入无尽的虚无主义,而执行力--啥也不干呢。所以没办法,如今的结果,都是过往的自己一步步堆积出来的,自己认,自己扛。我大抵是病了。高中疫情居家放假,病痛缠身但不会想学习的事;如今病了,想的是好倒霉,打乱了许多计划,干不成很多事。对自己好一点,一路的风景何尝不值得我们驻足欣赏。那些过去没掌握的东西,不是失去了,而是在未来等待,一步一个脚印慢慢来去拾起来就好了。戒骄戒躁。
嵌入式的小白:
hr都这么说了,意思就是不建议你去,就算面试了,估计offer也够呛
三月的小目标
点赞
评论
收藏
分享
03-30 22:41
Blessed John XXIII National Seminary (Weston) Java
90后大龄程序员失业4个月,终于上岸了
嘿,兄弟们好,昨天下午,我从新公司大楼签完字出来,阳光晃得我有点睁不开眼。我坐在路边花坛上,默默点了一根烟,坐了很久。整整 4 个月,120 天。作为一个 90 后、没赶上名校快车、又刚好撞上 30 多岁尴尬年纪的 Java 佬,这 120 天我经历的不仅仅是积蓄缩水的焦虑,更多的是一种职业信仰的崩塌。今天给大家聊聊这 4 个月我到底是怎么熬过来的,以及现在的外面市场到底变成了什么样。那些失眠的夜:从自信到自我怀疑刚失业那会儿,我心里其实挺稳的。干了 10 年 Java,在行业里扛过大流量,找工作还不是简简单单。但现实很快把我教训了。第一个月,我还在挑拣薪资;第二个月,开始觉得不对劲,投出去的...
大家都开始春招面试了吗
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
我放弃互联网大厂了。。
3433
2
...
Vibe Coding开发前的 7 个关键步骤
3169
3
...
字节实习一、二、三、HR面面经
2884
4
...
双非前端字节一面面经(难度 plus ultra 版)
2561
5
...
我招了!当年就是被招行这么招进去的
1730
6
...
京东零售平台产品与研发中心一面
1529
7
...
如何把面试主动权握在手里?Ai岗面试焚诀!
1429
8
...
美团后端暑期实习一面
1354
9
...
美团暑期二面
1345
10
...
在工作中,如何正确使用vibe coding来增效?
1345
创作者周榜
更多
正在热议
更多
#
你觉得大几开始实习最合适?
#
9646次浏览
94人参与
#
实习生的蛐蛐区
#
921489次浏览
4698人参与
#
招商银行数字金融训练营
#
69006次浏览
788人参与
#
你见过哪些招聘隐形歧视?
#
6744次浏览
67人参与
#
毕业季等于分手季吗
#
59293次浏览
680人参与
#
面试被问到不会的问题,你怎么应对?
#
8791次浏览
71人参与
#
开放七大实习专项,百度暑期实习值得冲吗
#
28905次浏览
530人参与
#
面试吐槽bot
#
182216次浏览
865人参与
#
好好告别我的学生时代
#
138169次浏览
1554人参与
#
25届秋招公司红黑榜
#
328775次浏览
1292人参与
#
小厂实习有必要去吗
#
87352次浏览
417人参与
#
租房前辈的忠告
#
380364次浏览
7491人参与
#
你都用vibe coding做过什么?
#
4061次浏览
164人参与
#
做完笔试后你收到面试了吗?
#
9505次浏览
82人参与
#
Vibe Coding 会干掉初级岗位吗?
#
7919次浏览
131人参与
#
实习转正进行时
#
168443次浏览
1064人参与
#
AI Coding实战技巧
#
2925次浏览
77人参与
#
你现在一天AI几次?
#
2970次浏览
60人参与
#
牛友の3月总结
#
13218次浏览
122人参与
#
如果人生可以debug你会改哪一行?
#
3542次浏览
75人参与
#
大厂实习和小厂实习最大的区别是什么?
#
17649次浏览
113人参与
#
百度工作体验
#
319725次浏览
2239人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务