首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客265542396号
门头沟学院 大数据开发工程师
发布于广东
关注
已关注
取消关注
@老欧讲职场:
10.25 大数据工程师也是需要了解 Java 基础的!!
接口和抽象类的区别接口和抽象类是面向对象编程中常用的两种抽象概念,它们的区别如下:定义方式:接口是一种完全抽象的类,只定义了方法的签名,没有任何实现代码;而抽象类是一种部分抽象的类,既可以定义方法的签名,也可以包含部分已经实现的代码。继承方式:一个类可以实现多个接口,而且接口之间可以通过继承来扩展功能;而一个类只能继承一个抽象类。实现方式:实现接口的类必须实现接口中定义的所有方法,没有任何灵活性;而继承抽象类的子类可以选择性地实现或覆盖抽象类中的方法。构造方法:接口不能有构造方法,因为接口不能被实例化;而抽象类可以有构造方法,用于子类的实例化和初始化。成员变量:接口中只能定义常量,不能定义成员变量;而抽象类可以定义成员变量。使用场景:接口适用于实现多态性和松散耦合的需求,用于定义一组相关的行为规范;而抽象类适用于定义一种具体的类族,可以提供一些默认的实现代码。总结来说,接口更加抽象和灵活,强调规范和多态性;而抽象类更加具体和灵活,强调代码的复用和继承关系。在具体的开发中,需要根据实际需求选择接口或抽象类来设计和实现类的继承关系。Java和C++的区别Java和C++是两种不同的编程语言,它们在以下几个方面有所不同:语法:Java是一种纯面向对象的编程语言,而C++是一种混合的面向对象和面向过程的编程语言。Java的语法相对简单,有更严格的语法规则和限制,而C++的语法相对灵活。平台:Java是一种跨平台的语言,可以在不同的操作系统上运行,只需要安装相应的Java虚拟机(JVM)。而C++编写的程序需要在特定的操作系统上进行编译和运行。内存管理:Java使用自动内存管理(垃圾回收机制),程序员不需要手动管理内存。而C++需要程序员手动分配和释放内存,这可能导致内存泄漏和悬挂指针等问题。性能:由于Java运行在虚拟机上,相对于C++,它的执行速度可能会慢一些。C++编译后直接运行在操作系统上,因此具有更高的执行效率和更好的性能。应用领域:Java主要用于开发企业级应用程序、Web应用程序和移动应用程序等。而C++通常用于系统级开发,如操作系统、游戏引擎和嵌入式系统等。总的来说,Java和C++在语法、平台、内存管理、性能和应用领域等方面有所不同,选择使用哪种语言取决于具体的项目需求和开发环境。JVM内存区域划分,分别的作用,GC发生在哪里JVM内存区域划分主要包括以下几个部分:程序计数器(Program Counter):用于记录当前线程执行的字节码指令的地址,属于线程私有的内存区域。Java虚拟机栈(Java Virtual Machine Stack):每个线程在创建时都会分配一个Java虚拟机栈,用于存储方法的局部变量、操作数栈、动态链接、方法出口等信息。栈帧(Stack Frame)用于存储方法调用和执行过程中的数据。本地方法栈(Native Method Stack):类似于Java虚拟机栈,但用于执行本地方法(Native Method)。Java堆(Java Heap):用于存储对象实例和数组,是所有线程共享的内存区域。Java堆是垃圾回收的主要区域,包括新生代(Young Generation)和老年代(Old Generation)。新生代又分为伊甸区(Eden Space)和两个幸存者区(Survivor Space)。新创建的对象会被分配到伊甸区,经过一次垃圾回收后仍然存活的对象会被移动到其中一个幸存者区,而经过多次垃圾回收后仍然存活的对象最终会被移动到老年代。老年代主要存放生命周期较长的对象,当老年代的空间不足时会触发Full GC。方法区(Method Area):用于存储类的元数据信息,包括类的结构、静态变量、常量池等。方法区也是垃圾回收的重要区域之一,主要回收无用的类和常量。GC(Garbage Collection)发生在Java堆中的新生代和老年代。新生代的GC称为Minor GC,主要回收伊甸区和幸存者区的垃圾对象。老年代的GC称为Major GC或Full GC,主要回收老年代的垃圾对象。GC的目的是回收无用的对象,释放内存空间,以提高系统的性能和资源利用率。GC算法有哪些,为什么要分代收集,为什么新生代用复制算法,展开讲一下自己的相关了解GC算法有以下几种常见的类型:标记-清除算法(Mark and Sweep):首先标记出所有活动对象,然后清除未标记的对象。复制算法(Copying):将内存分为两个相等的区域,每次只使用其中一个,当这个区域满了之后,将存活的对象复制到另一个区域,然后清除已使用的区域。标记-整理算法(Mark and Compact):首先标记出所有活动对象,然后将活动对象向一端移动,然后清除边界以外的内存。分代收集算法(Generational Collection):将内存分为不同代,一般将新创建的对象放入新生代,经过多次垃圾回收后仍存活的对象会被移到老年代。分代收集的原因是因为不同的对象具有不同的生命周期,大多数对象在创建之后很快就变得不可达,只有少部分对象会长时间存活。所以将内存划分为不同代,可以根据对象的生命周期进行更加精细的垃圾回收。新生代使用复制算法的原因是因为新创建的对象往往存活时间较短,大多数对象在创建之后很快就变得不可达。而复制算法可以通过复制存活对象的方式,有效地回收大量的垃圾对象,同时也避免了内存碎片的问题。TCP/IP模型和作用,DNS是哪一层,应用层有哪些协议TCP/IP模型是一种网络协议体系结构,它由四个层次组成:网络接口层、网络层、传输层和应用层。其作用是定义了网络通信的标准和规范,使不同的计算机和设备能够互相通信。DNS(Domain Name System)是分布式数据库系统,它在TCP/IP模型中属于应用层。DNS的主要作用是将域名转换为相应的IP地址,使得用户可以通过易于记忆的域名来访问互联网上的服务和资源。应用层包含了众多协议,常见的应用层协议包括但不限于:HTTP(Hypertext Transfer Protocol):用于在客户端和服务器之间传输超文本数据,是万维网的基础协议。FTP(File Transfer Protocol):用于在客户端和服务器之间传输文件。SMTP(Simple Mail Transfer Protocol):用于电子邮件的发送。POP3(Post Office Protocol 3):用于电子邮件的接收。IMAP(Internet Message Access Protocol):用于电子邮件的接收和管理。DNS(Domain Name System):用于域名解析。DHCP(Dynamic Host Configuration Protocol):用于自动分配IP地址和其他网络配置信息。Telnet:用于远程登录到其他计算机。SNMP(Simple Network Management Protocol):用于网络设备的管理。以上只是一些常见的应用层协议,实际上应用层协议还有很多其他的。HTTP和HTTPS区别HTTP和HTTPS是两种不同的网络传输协议。HTTP(Hypertext Transfer Protocol)是一种用于在Web浏览器和Web服务器之间传输数据的协议。它使用明文传输数据,不对传输的数据进行加密和身份验证。因此,HTTP在数据传输过程中存在安全隐患,容易被黑客截取和篡改。HTTPS(Hypertext Transfer Protocol Secure)是在HTTP的基础上加入了SSL/TLS协议进行加密和身份验证的协议。它通过使用公钥加密和私钥解密的方式,对数据进行加密传输,确保数据在传输过程中的安全性。HTTPS使用的是443端口进行通信,并且在浏览器地址栏会显示一个锁形状的图标,表示当前网站是通过HTTPS连接进行传输的。因此,HTTP和HTTPS的主要区别在于数据传输过程中的安全性。HTTPS相对于HTTP更加安全,可以保护数据的机密性和完整性,适用于需要保护用户隐私和敏感数据的场景,如在线支付、网上银行等。Arraylist和LinkedList区别ArrayList和LinkedList是Java中两种不同的实现List接口的数据结构。内部实现:ArrayList底层使用动态数组实现,LinkedList底层使用双向链表实现。访问效率:ArrayList的查询和随机访问效率较高,因为可以通过索引直接访问元素;而LinkedList的插入和删除操作效率较高,因为只需要调整链表中的指针。内存占用:ArrayList在添加或删除元素时可能需要进行数组的扩容或缩容操作,因此可能会占用更多的内存空间;而LinkedList则需要额外存储每个元素的前后指针,因此内存占用相对较高。迭代器性能:使用Iterator迭代器遍历ArrayList的速度较快,而LinkedList则需要通过指针逐个遍历。综上所述,如果需要频繁进行随机访问或查询操作,可以选择ArrayList;如果需要频繁进行插入或删除操作,可以选择LinkedList。1-n的n+1个数,找重复数字要找出重复数字,可以使用哈希表或者排序的方法。方法一:哈希表创建一个空的哈希表。遍历给定的n+1个数。对于每个数,检查它是否已经在哈希表中存在。如果存在,说明这个数字是重复的,返回这个数字。如果不存在,将这个数字添加到哈希表中。如果遍历完所有的数字都没有找到重复数字,说明输入的数有误。方法二:排序对给定的n+1个数进行排序。遍历排序后的数组,检查相邻的两个数是否相等。如果相等,说明这个数字是重复的,返回这个数字。如果不相等,继续遍历。如果遍历完所有的数字都没有找到重复数字,说明输入的数有误。以上两种方法都可以找到重复数字,选择哪种方法取决于题目要求和实际情况。归并排序、快排、堆排分别的复杂度和应用场景归并排序的时间复杂度是O(nlogn),空间复杂度是O(n)。它适用于需要稳定排序且对内存占用相对宽裕的情况,如对大规模数据进行排序。快速排序的平均时间复杂度是O(nlogn),最坏情况下是O(n^2),空间复杂度是O(logn)。它适用于对大规模数据进行排序,尤其是在内存资源有限的情况下,因为它只需要常数级别的额外空间。堆排序的时间复杂度是O(nlogn),空间复杂度是O(1)。它适用于需要在内存中进行排序的情况,特别是对于需要实时排序或者对内存使用有限的情况下,因为它不需要额外的空间。总结:归并排序适用于大规模数据排序且对内存占用宽裕的情况。快速排序适用于大规模数据排序且对内存占用有限的情况。堆排序适用于在内存中进行实时排序或者对内存使用有限的情况。b+树,三范式,表和表的join方式回答:B+树:B+树是一种常用的数据结构,用于索引和组织数据。它是一种多路搜索树,具有平衡性、有序性和高度平衡的特点。B+树的节点包含多个关键字和对应的指针,可以加快查找、插入和删除操作的效率。在大数据开发中,B+树通常用于数据库索引的实现,以提高查询速度和数据的组织性。三范式:三范式(Third Normal Form,3NF)是关系数据库设计的一种规范化形式。它要求数据库中的所有非主键字段必须直接依赖于主键,而不是依赖于其他非主键字段。换句话说,每个字段只能依赖于主键,不能依赖于其他非主键字段。通过遵循三范式,可以减少数据冗余和数据更新异常,提高数据库的数据一致性和查询效率。表和表的join方式:在关系型数据库中,表是数据的存储单位,而表的join操作用于将多个表中的数据进行关联和连接。常见的表的join方式有以下几种:内连接(Inner Join):返回两个表中满足连接条件的数据。外连接(Outer Join):包括左外连接(Left Outer Join)和右外连接(Right Outer Join),返回满足连接条件的数据以及未满足连接条件的数据。自连接(Self Join):在同一张表中进行连接操作,用于将表中的数据进行自身关联。交叉连接(Cross Join):返回两个表的笛卡尔积,即两个表中所有数据的组合。以上是对问题的简要回答,如果需要更详细的解释或者有其他相关问题,欢迎继续提问。1g内存,找两个亿级数据大文件中的交集对于这个问题,我会采取以下方法来找到两个亿级数据大文件中的交集:首先,我会将这两个数据文件分别加载到内存中。由于内存只有1GB,所以我需要采取一些策略来处理这两个大文件。例如,我可以将每个文件分成多个小文件,然后逐个加载到内存中进行处理。一旦数据加载到内存中,我会使用哈希算法或者排序算法来对数据进行处理。如果使用哈希算法,我会将一个文件的数据构建成一个哈希表,然后遍历另一个文件的数据,查找是否存在于哈希表中。如果使用排序算法,我会对两个文件的数据进行排序,然后使用双指针法来找到交集。在找到交集之后,我会将结果保存到一个新的文件中,以便后续的处理或者分析。需要注意的是,由于内存的限制,可能无法一次性加载整个文件,所以我会采取适当的分块或者分批处理的方式来处理数据。此外,为了提高效率,我还可以考虑使用并行计算或者分布式计算的方法来处理这两个大文件。
点赞 4
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
今天 20:39
已编辑
南京邮电大学 Java
两个月,用Go语言重写龙虾🦞,GitHub斩获4700stars
我们是开源社区OpenAgent 团队的开发者。花了两个月,用Go语言做了一个真正的0配置,0依赖,双击就能使用的个人本地单文件版龙虾🦞。真正做到了开箱即用,也受到了很多社区中的关注。OpenAgent,一个面向个人开发者和极客的开源本地 AI Agent。定位跟 OpenClaw、Hermes 类似,都是个人本地助手这个赛道,但我们走了一条完全不同的路:用 Go 语言写成一个单文件二进制,下载 exe 双击就能跑,零配置开箱即用。项目地址:https://github.com/the-open-agent/openagent假如这个项目的功能或者架构帮助到你了,希望可以给我们的项目一个st...
mcart:
支持一波,思路上给我了参考
简历中的项目经历要怎么写
点赞
评论
收藏
分享
今天 12:11
已编辑
北京邮电大学 Java
一个下午投了10家,说说网申助手的表现
没课的下午,我决定干一件事:把积攒了一周想投的公司全部投掉。 清单上的10家:字节、腾讯、美团、百度、京东、快手、网易、小红书、滴滴、B站。【14:00 - 准备工作】先打开网申助手确认信息是最新的(之前改过一次项目描述),然后按顺序开了10个tab,每个tab对应一家公司的招聘页面。【14:10 - 开始投递】第一家字节:打开网申页面,助手自动填了基础信息,我检查了一遍,补了开放题(为什么选字节),提交。耗时4分钟。第二家腾讯:同样流程,自动填、核对、写开放题、提交。耗时5分钟。第三家美团:基本一样,但美团的开放题有两个,多花了2分钟。耗时6分钟。【14:35 - 中段加速】到第四家百度的时...
27届求职交流
点赞
评论
收藏
分享
05-18 12:20
门头沟学院 Java
字节孝子
这里给大家说一下,出现这个流程是正常的,之前有人说hr挂了,后续已经收到offer了
我的求职进度条
点赞
评论
收藏
分享
昨天 22:55
电子科技大学 Java
解决了xd们,发了个dy曝光视频,十几万播放,直接让他火速联系我,赔我路费了,兄弟们碰到不公平的违法行为,一定要积极捍卫自己权益
点赞
评论
收藏
分享
05-15 20:35
门头沟学院 Unity3D客户端
实习第二第三天,一个功能重写3遍。。。
昨天提交的时候,主程失误把我的项目回退了,做的东西全没了,然后重新做了一遍,结果后来提交又冲突了,又重新写了一遍,后来同事给我发特效包的时候直接把所有代码都导出来了,我直接导进去了,写的代码又没了,而且更新检测不到,更新不了同事的项目,又改了好长时间了,还有策划瞎指挥导致浪费很长时间我实个习容易吗
你遇到过哪些神仙同事
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
AI Agent 面试 Top50 必刷题
1.2W
2
...
要对实习同事表白吗?
9340
3
...
到底怎么和 AI 一起写一个好项目?
5595
4
...
实习dirty work,怎么包装产出
4808
5
...
当你有一个只想捆住你的妈妈
3936
6
...
AGENT面试题?
3774
7
...
看不懂组内文档,实习怎么偷产出?
3260
8
...
三段实习,被室友骂工贼,我错了吗?
3044
9
...
前京东HR说:这样改简历,真的会被一眼相中
2564
10
...
碰到不公平的违法行为,一定要捍卫!
2449
创作者周榜
更多
正在热议
更多
#
26届春招投递记录
#
31925次浏览
244人参与
#
妈妈治愈了你哪些脆皮时刻
#
47398次浏览
358人参与
#
27届实习投递记录
#
113128次浏览
1240人参与
#
我的工作日记
#
207732次浏览
1828人参与
#
我的求职总结
#
511684次浏览
7082人参与
#
你投了多少家公司?进展是___
#
248091次浏览
1447人参与
#
大学生该如何认清当下的就业环境?
#
178646次浏览
943人参与
#
AI面会问哪些问题?
#
134021次浏览
3414人参与
#
要毕业了,再不说就来不及了
#
5921次浏览
107人参与
#
我与AI的日常
#
10583次浏览
187人参与
#
如果公司降薪,你会跳槽吗?
#
168741次浏览
972人参与
#
27届求职交流
#
499287次浏览
4656人参与
#
今年秋招还有金九银十吗
#
85054次浏览
518人参与
#
不考虑薪资和职业,你最想做什么工作呢?
#
168663次浏览
916人参与
#
25届非技术实习投递记录
#
159349次浏览
1027人参与
#
应届生应该先就业还是先择业
#
202248次浏览
944人参与
#
你以为的实习VS真实的实习
#
144150次浏览
760人参与
#
你觉得什么岗位会被AI替代
#
65334次浏览
386人参与
#
你的秋招进行到哪一步了
#
2802568次浏览
23414人参与
#
腾讯工作体验
#
646735次浏览
3915人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务