首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
忘川c
门头沟学院 C++
发布于广东
关注
已关注
取消关注
1
@青玉白露:
字节飞书后端二面:简单的一批!
面试题目1、自我介绍2、项目太简单,随便问了两句==================数据结构================1、数据结构的排序算法有哪些?(每种时间复杂度都说一下,快排和堆排的编程思想是什么?)2、说一下经典的图论算法及使用场景(最短路、最小生成树等等)3、如何判断有向图是否有环?(拓扑排序)4、更高级的树的算法了解哪些?他们的使用场景有什么?(二叉树、二叉搜索树、平衡二叉树、红黑树、B+树、B树)5、字典树了解吗?他有什么用途?==================网络====================1、介绍一下HTTP协议2、介绍一下HTTP1.0、1.1、2.0以及未来规划的3.0有什么区别和联系3、了解过IO多路复用吗?==================操作系统=================1、介绍一下你知道的操作系统的知识2、进程和线程是怎么切换的?3、了解过协程码?4、数据从内存写到磁盘是怎么样的一个过程?CPU读数据又是怎样的一个过程?(面试官想问的是DMA)==================算法题==================1、给你一个大小为10的整数数组和一个目标值target,每个数只能用一次,判断是否能用数组中的某些整数相加得到目标值target。(01背包,leetcode原题,没找到具体题号)2、课程表(leetcode207)==================反问===================1、部门做什么?(saas系统,人事薪酬系统)2、还有几轮面试参考回答面试官: 请做一个简短的自我介绍。应聘者: 您好,我是[您的名字],是一名有[X]年经验的后端开发工程师。我主要使用Java和Python进行开发,对数据结构、算法、网络和操作系统都有深入的了解。在过去的工作中,我参与过[具体项目名称]的开发,主要负责[具体职责]。我热爱技术,经常关注最新的技术动态,并且喜欢在实际项目中应用新技术来解决问题。面试官: 好的,虽然你的项目经验看起来有些简单,但我们先继续其他方面的问题。让我们从数据结构开始。面试官: 数据结构的排序算法有哪些?每种的时间复杂度是多少?快排和堆排的编程思想是什么?应聘者: 常见的排序算法包括:冒泡排序:O(n^2)选择排序:O(n^2)插入排序:O(n^2)希尔排序:O(nlogn) 到 O(n^2)之间归并排序:O(nlogn)快速排序:平均O(nlogn),最坏O(n^2)堆排序:O(nlogn)计数排序:O(n+k),k是数据范围桶排序:O(n+k)基数排序:O(nk),k是最大数的位数快速排序的核心思想是分治法。它选择一个基准元素,将数组分成两部分,一部分小于基准,一部分大于基准,然后递归地对这两部分进行排序。堆排序的思想是利用堆这种数据结构所设计的一种排序算法。它先将数组构建成一个最大堆,然后将堆顶元素与末尾元素交换,这样末尾元素就是最大值。然后将剩余的n-1个元素重新构造成一个堆,重复这个过程直到只有一个元素为止。面试官: 说一下经典的图论算法及使用场景。应聘者: 经典的图论算法包括:Dijkstra算法:用于求解单源最短路径问题。适用于无负权边的图,常用于导航系统、网络路由等。Floyd-Warshall算法:用于求解所有点对最短路径问题。适用于正权或负权(但无负权回路)的图,常用于寻找网络中任意两点间的最短路径。Prim算法和Kruskal算法:用于求解最小生成树问题。适用于带权无向图,常用于网络设计、电路设计等。Bellman-Ford算法:用于求解单源最短路径问题,可以处理负权边。常用于路由协议如RIP(Routing Information Protocol)。拓扑排序:用于有向无环图(DAG)的顶点排序。常用于任务调度、编译依赖分析等。强连通分量算法(如Kosaraju算法):用于找出有向图中的强连通分量。常用于社交网络分析、网页链接分析等。这些算法在网络设计、路径规划、调度问题等多个领域有广泛应用。面试官: 如何判断有向图是否有环?应聘者: 判断有向图是否有环,我们可以使用拓扑排序或者深度优先搜索(DFS)。使用拓扑排序的方法是:计算图中每个顶点的入度。将所有入度为0的顶点加入队列。当队列非空时,取出一个顶点,将其所有邻接顶点的入度减1。如果减1后邻接顶点的入度变为0,则将其加入队列。重复步骤3,直到队列为空。如果最终图中所有顶点都被访问过,则图中无环;否则,图中有环。这个方法的时间复杂度是O(V+E),其中V是顶点数,E是边数。使用DFS的方法是:对图中的每个未访问的顶点进行DFS。在DFS过程中,标记每个顶点的状态(未访问、正在访问、已访问完成)。如果在DFS过程中,遇到一个"正在访问"的顶点,说明图中存在环。这个方法的时间复杂度也是O(V+E)。面试官: 更高级的树的算法了解哪些?他们的使用场景有什么?应聘者: 更高级的树算法包括:二叉树:基本的树结构,用于表示层次关系。二叉搜索树(BST):左子树的所有节点值小于根节点,右子树的所有节点值大于根节点。用于快速查找、插入和删除操作,平均时间复杂度O(logn)。平衡二叉树(如AVL树):在BST的基础上保证树的平衡,防止树退化成链表。用于需要频繁插入删除的动态数据集。红黑树:一种自平衡的BST,在Linux内核、Java的TreeMap等地方广泛使用。相比AVL树,牺牲了部分平衡性来减少插入和删除操作的旋转次数。B树:一种多路搜索树,常用于数据库和文件系统中。能够减少磁盘I/O次数,提高查询效率。B+树:B树的变种,所有数据都存在叶子节点,非叶子节点只存索引。广泛用于数据库索引,如MySQL的InnoDB存储引擎。这些高级树结构主要用于优化查询、插入、删除操作,以及在外部存储(如磁盘)上组织大量数据。选择哪种结构取决于具体的应用场景,如数据量大小、操作频率、是否需要范围查询等。面试官: 字典树了解吗?它有什么用途?应聘者: 是的,我了解字典树,也称为前缀树(Trie)。字典树是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这种数据结构有以下特点:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。每个节点的所有子节点包含的字符都不相同。字典树的主要用途包括:字符串检索:可以在O(m)时间内完成一个长度为m的字符串查询。前缀匹配:可以快速查找具有相同前缀的全部键值。字符串排序:字典树天然地按字典序存储字符串。最长公共前缀:可以用于查找一组字符串的最长公共前缀。自动补全:在搜索引擎、输入法等应用中,可以快速找出所有以某个前缀开始的字符串。IP路由表查找:在计算机网络中,路由器使用类似字典树的结构来存储路由表。字典树在需要大量字符串操作的场景中非常有用,如拼写检查、IP路由、电话号码簿等。它的主要优势是在时间和空间上都能提供不错的性能。面试官: 好的,让我们转向网络方面的问题。介绍一下HTTP协议。应聘者: HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是World Wide Web数据通信的基础。HTTP的主要特点包括:客户端-服务器模型:客户端发送请求,服务器返回响应。无状态:每个请求都是独立的,服务器不会在不同请求之间保留任何数据。可扩展:通过headers可以轻松地扩展协议的功能。无连接:每次连接只处理一个请求。(注:HTTP/1.1引入了持久连接)媒体独立:任何类型的数据都可以通过HTTP传输。HTTP请求方法包括GET、POST、PUT、DELETE等,用于指定对资源的操作。HTTP状态码用于表示请求的结果,如200 (OK),404 (Not Found),500 (Internal Server Error)等。HTTP协议广泛应用于Web浏览器、移动应用等各种网络通信场景。面试官: HTTP1.0、1.1、2.0以及未来规划的3.0有什么区别和联系?应聘者: HTTP各个版本的主要区别和联系如下:HTTP/1.0 (1996年):引入了版本号概念增加了POST、HEAD等方法增加了状态码、多字符集支持等HTTP/1.1 (1997年):引入了持久连接(Keep-Alive),默认开启增加了管道化(Pipelining)技术支持虚拟主机增加了更多的缓存控制机制新增了OPTIONS、PUT、DELETE等方法HTTP/2 (2015年):使用二进制格式传输数据,而不是文本格式支持多路复用,允许同时通过单一的TCP连接发起多重的请求-响应消息使用HPACK压缩HTTP头部服务器推送(Server Push)请求优先级HTTP/3 (开发中):基于QUIC协议,使用UDP而不是TCP改进的拥塞控制连接迁移0-RTT连接建立更好的错误处理主要的演进趋势是提高性能、降低延迟、增强安全性和改善用户体验。每个新版本都在解决前一个版本的限制和问题,同时保持向后兼容性。面试官: 了解过IO多路复用吗?应聘者: 是的,我了解IO多路复用。IO多路复用是一种同步IO模型,它允许单个进程同时监视多个文件描述符,以确定是否有任何描述符准备好进行IO操作。这种技术可以显著提高程序的性能和可伸缩性。主要的IO多路复用机制包括:select:最早的IO多路复用函数,可以监视多个文件描述符。但它有一些限制,如文件描述符数量上限为1024。poll:类似于select,但没有文件描述符数量的限制。epoll:Linux特有的IO多路复用机制,性能最好。它使用事件驱动的方式,只关注活跃的文件描述符。kqueue:BSD系统的IO多路复用机制,类似于epoll。IO多路复用的主要优势是:可以同时监控多个IO操作,提高程序的并发性。非阻塞IO,提高了程序的响应速度。比创建多线程的开销要小。在实际应用中,IO多路复用被广泛用于高性能的网络服务器设计中,如Nginx、Redis等。面试官: 好的,让我们转向操作系统方面。介绍一下你知道的操作系统的知识。应聘者: 操作系统是管理计算机硬件和软件资源的系统软件。以下是一些关键概念:进程管理:操作系统负责创建、调度、中断和终止进程。包括进程状态、进程调度算法(如轮转、优先级调度)等。内存管理:负责分配和回收内存。包括分页、分段、虚拟内存等概念。文件系统:管理持久化存储。包括文件组织、目录结构、文件保护等。I/O管理:控制外部设备的操作。包括缓冲、高速缓存、设备驱动程序等。死锁:系统资源的循环等待。包括死锁的预防、避免、检测和恢复。并发控制:管理多个进程同时执行。包括互斥、同步、信号量等概念。安全和保护:保护系统资源不被非法访问。包括访问控制、身份认证等。网络功能:提供网络通信支持。包括协议栈、网络驱动等。系统调用:提供用户程序和操作系统之间的接口。这些概念共同构成了操作系统的核心功能,使得计算机能够高效、安全地运行。面试官: 进程和线程是怎么切换的?应聘者: 进程和线程的切换,也称为上下文切换,是操作系统的一个重要功能。这个过程大致如下:进程切换:保存当前进程的上下文(CPU寄存器状态、程序计数器等)到进程控制块(PCB)中。将CPU的控制权从当前进程切换到操作系统内核。选择下一个要运行的进程(通过调度算法)。从新进程的PCB中恢复上下文。将CPU控制权交给新进程。线程切换:线程切换类似于进程切换,但开销较小。保存当前线程的上下文到线程控制块(TCB)。选择下一个要运行的线程。恢复新线程的上下文。线程切换比进程切换更轻量,因为同一进程内的线程共享地址空间和其他资源,切换时不需要切换内存映射等信息。切换的触发可能由时间片用完、I/O操作、高优先级任务到达等原因引起。面试官: 了解过协程吗?应聘者: 是的,我了解协程。协程是一种用户级线程,也被称为轻量级线程。它的主要特点是:用户空间调度:协程的调度由用户程序控制,而不是操作系统。轻量级:创建和切换的开销非常小,可以轻松创建上万个协程。非抢占式:协程主动让出控制权,而不是被操作系统强制剥夺。共享地址空间:同一进程内的协程共享地址空间,通信更简单高效。状态保存:协程可以在特定点保存状态,之后再恢复,有利于实现某些复杂的控制结构。协程在一些语言中有原生支持,如Go语言的goroutine,Python的asyncio。它们特别适合I/O密集型任务,可以大幅提高程序的并发性能。面试官: 数据从内存写到磁盘是怎么样的一个过程?CPU读数据又是怎样的一个过程?应聘者: 这个问题涉及到DMA(直接内存访问)的概念。让我分别解释这两个过程:数据从内存写到磁盘:CPU初始化DMA控制器,设置源地址(内存)、目标地址(磁盘)和传输数据量。DMA控制器直接控制内存到磁盘的数据传输,不需要CPU干预每个字节的传输。传输完成后,DMA控制器向CPU发送中断信号。CPU处理这个中断,确认数据传输完成。CPU读取数据:CPU发出读取请求到内存控制器。如果数据在缓存中,直接从缓存读取(缓存命中)。如果数据不在缓存中(缓存未命中):内存控制器访问主内存。数据从主内存传输到CPU的缓存。CPU从缓存中读取数据。在现代计算机中,DMA大大减轻了CPU在I/O操作中的负担,提高了系统整体性能。而CPU的多级缓存机制则有效地缓解了CPU和主内存之间的速度差异,提高了数据访问速度。面试官: 好的,现在我们来做两道算法题。第一题:给你一个大小为10的整数数组和一个目标值target,每个数只能用一次,判断是否能用数组中的某些整数相加得到目标值target。应聘者: 这个问题可以用动态规划来解决,具体是0-1背包问题的变体。以下是Python的实现:class Solution { public boolean canSum(int[] nums, int target) { boolean[] dp = new boolean[target + 1]; dp[0] = true; for (int num : nums) { for (int i = target; i >= num; i--) { dp[i] |= dp[i - num]; } } return dp[target]; } public static void main(String[] args) { Solution solution = new Solution(); int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int target = 15; System.out.println(solution.canSum(nums, target)); // 输出: true }}这个算法的时间复杂度是O(n*target),空间复杂度是O(target),其中n是数组的长度。算法的思路是:创建一个布尔数组dp,dp[i]表示是否可以用数组中的数相加得到i。初始化dp[0] = True,因为总是可以选择不使用任何数得到和为0。对于数组中的每个数num,从target到num遍历:如果dp[i-num]为True,说明可以用一些数得到i-num,那么再加上num就可以得到i,所以dp[i]也为True。最后返回dp[target],即是否可以得到目标值。面试官: 第二题:课程表(LeetCode 207)应聘者: 这个问题本质上是判断一个有向图是否有环。我们可以使用拓扑排序或DFS来解决。这里我用拓扑排序的方法:import java.util.*;class Solution { public boolean canFinish(int numCourses, int[][] prerequisites) { // 构建图和入度数组 List<List<Integer>> graph = new ArrayList<>(numCourses); int[] inDegree = new int[numCourses]; for (int i = 0; i < numCourses; i++) { graph.add(new ArrayList<>()); } for (int[] prereq : prerequisites) { graph.get(prereq[1]).add(prereq[0]); inDegree[prereq[0]]++; } // 将所有入度为0的节点加入队列 Queue<Integer> queue = new LinkedList<>(); for (int i = 0; i < numCourses; i++) { if (inDegree[i] == 0) { queue.offer(i); } } // 记录已访问的节点数 int visited = 0; while (!queue.isEmpty()) { int node = queue.poll(); visited++; // 将所有相邻节点的入度减1 for (int neighbor : graph.get(node)) { inDegree[neighbor]--; if (inDegree[neighbor] == 0) { queue.offer(neighbor); } } } // 如果访问的节点数等于课程总数,说明没有环 return visited == numCourses; }}这个算法的时间复杂度是O(V+E),空间复杂度是O(V+E),其中V是课程数,E是先决条件的数量。算法的思路是:构建图和入度数组。将所有入度为0的节点(没有先决条件的课程)加入队列。每次从队列中取出一个节点,访问计数加1,并将其所有邻接节点的入度减1。如果某个邻接节点的入度变为0,将其加入队列。重复步骤3和4,直到队列为空。如果访问的节点数等于课程总数,说明所有课程都可以完成,即图中没有环。这个方法实际上是通过逐步删除入度为0的节点来判断图中是否存在环。如果存在环,那么环中的节点的入度永远不会变为0,最终访问的节点数会小于总节点数。面试官: 好的,面试到此结束。你有什么想问我的吗?应聘者: 是的,我有两个问题想请教:能否介绍一下贵部门主要负责的业务和技术栈?您提到是做SaaS系统,人事薪酬系统,我很感兴趣想了解更多细节。接下来还有几轮面试?整个招聘流程是怎样的?面试官: [面试官会根据公司实际情况回答这些问题]应聘者: 非常感谢您的解答,这些信息对我很有帮助。我对贵公司的技术和业务都很感兴趣,希望有机会能加入您的团队。谢谢您今天的时间,期待下一步的反馈。面试官: 好的,我们会尽快给你反馈。谢谢你的参与,再见。应聘者: 谢谢,再见。建议直接收藏专栏,每日更新一次面经!不少于100篇!专栏地址👉:https://www.nowcoder.com/creation/manager/columnDetail/MKaNda辛苦大家点赞👍收藏📚评论💬!白露拜谢!
点赞 63
评论 9
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
02-02 16:30
西安电子科技大学 Java
什么是防抖和节流?面试官问这题,大家会不?
一、先搞懂:为啥需要这俩东西?比如你刷短视频时快速滑动屏幕,手机用不用 “每滑 1 毫米就重新算一次画面”?肯定不用啊!要是这么干,手机立马变卡、耗电快。前端也一样:像输入框实时搜东西(你输 “苹”“苹果”)、窗口放大缩小、滚动页面,这些操作会 “疯狂触发代码”。防抖和节流就是用来 “拦着” 这些疯狂操作,让代码别瞎忙活 ——核心就是:省劲儿、不卡顿。二、防抖:“等你彻底停下,我才干活”用你每天都可能遇到的 “电梯关门” 举例:你进电梯后,电梯会说 “等 10 秒再关门”。这 10 秒内如果又有人按电梯进来,电梯会 “把 10 秒倒计时归零”,再等 10 秒。直到没人再进来、10 秒走完,...
如何判断面试是否凉了
点赞
评论
收藏
分享
昨天 20:51
卓驭科技_HR(准入职员工)
卓驭(大疆车载)内推
自我介绍随后对项目经历的真实性进行了核实,包括项目背景、团队构成及个人分工;面试官询问是否亲自编写过IIC和SPI的底层驱动代码(回答为是);对比IIC与SPI通信的区别(主要涉及速率方面IIC较低而SPI较高、IIC为半双工而SPI为全双工、通信结构上IIC支持多主多从而SPI一般为单主多从点对点模式);介绍BootLoader进行固件升级的整体流程;解释static关键字的用途(可用于修饰变量和函数);阐述函数指针的概念及其实际应用场景(例如在BootLoader中实现向应用程序的跳转);说明结构体变量的几种初始化方式(包括定义后逐成员赋值、定义时按声明顺序初始化、以及定义时通过指定成员名...
点赞
评论
收藏
分享
01-19 12:48
门头沟学院 C++
这世界已经开始发癫了,
这是在向下兼容了吗,本以为牛客那些,30k侮辱价已经很装了,现在小红薯那边,都本科开始逐渐接受12k了😅😅😅
只想搞钱的鸽子很喜欢...:
混账是很多的,还有那些在自己风华正茂的年纪说风凉话讥讽那些下岗前员工的。这些人都是现在职场环境这么烂的帮凶
点赞
评论
收藏
分享
01-25 15:42
蚌埠坦克学院 后端工程师
基本都在宿舍
我基本都在宿舍面试,也没啥讲究,直接开摄像头就开聊,也没有搞一个纯色背景,背后就直接是室友的床铺,不过面试官都挺理解,没也没有因为这个难为我。有次室友洗完澡,湿漉漉地从身后路过,我还在面试呢,面试官也没介意,就当是生活的一部分了,不过还是不要学我比较好,能找一个安静的环境最好
你都在哪些场所面过试?
点赞
评论
收藏
分享
01-30 16:14
求助,985毕业一年了才开始找工作
之前考研二战,但是感觉有点寄了。现在想找工作了,但是基本上要么是应届校招,要么就是要有工作经历。😫我是ai专业,会python和c++,毕设是深度强化学习,高中 大学也拿了一些编程竞赛奖项。想找个相关的工作。感觉好迷茫,求助大佬们,我现在改怎么办,该怎么努力呢?
在找工作求抱抱
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
AI 应用开发学习全景路线图
1.6W
2
...
大厂到底想要什么样的人???
5468
3
...
害怕被嘲笑就不去做了吗?
5458
4
...
面试官视角聊聊,AI大模型产品到底是做什么的?
2473
5
...
2026的你,应该知道哪些AI面试题?
2416
6
...
我用AI做了个小游戏,来玩!
1662
7
...
测试/测开方向刷题经验分享
1649
8
...
字节财经业务一面凉经
1483
9
...
因为简历太烂被培训班找上了吗
1248
10
...
后端 offer选择
1172
创作者周榜
更多
正在热议
更多
#
在大厂上班是一种什么样的体验
#
5386次浏览
72人参与
#
机械人避雷的岗位/公司
#
40953次浏览
267人参与
#
程序员找工作至少要刷多少题?
#
10000次浏览
147人参与
#
刚入职的你踩过哪些坑
#
4433次浏览
92人参与
#
论秋招对个人心气的改变
#
6175次浏览
107人参与
#
为了减少AI幻觉,你注入过哪些设定?
#
1984次浏览
57人参与
#
牛客AI体验站
#
3594次浏览
97人参与
#
一张图晒一下你的AI员工
#
3126次浏览
64人参与
#
程序员能干到多少岁?
#
5941次浏览
90人参与
#
我现在比当时_,你想录用我吗
#
3921次浏览
69人参与
#
关于春招/暑期实习,你想知道哪些信息?
#
4342次浏览
84人参与
#
AI Coding的使用心得
#
2563次浏览
67人参与
#
找工作的破防时刻
#
252168次浏览
1958人参与
#
晒晒你司的新年福利
#
4264次浏览
71人参与
#
实习,不懂就问
#
165742次浏览
1476人参与
#
软开人,秋招你打算投哪些公司呢
#
180850次浏览
1397人参与
#
帆软软件工作体验
#
12856次浏览
70人参与
#
你投了多少份简历了?
#
423107次浏览
3965人参与
#
黄金这个事上,你学到了什么
#
901次浏览
26人参与
#
暑假倒计时,你都干了些啥?
#
40891次浏览
216人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务