大厂面试题
文章平均质量分 62
分享大厂面试题,轻松进大厂
程序员行者孙
计算机本硕,分享AI+编程实践玩法(天美加班中,断更一段时间),公众号:AI Sun
展开
-
腾讯客户端开发实习一面
听说腾讯25年5000+offer,我就去了...投完简历,当天晚上做完测评,第二天下午打电话约了第三天面试,额流程很快,快到第三天就寄了...大致是这些了,其实问的不难,但是吗,面试时要完整的口述出来,就需要很熟悉,半知半解肯定是会被面试官察觉到你的底子不好。项目问的不多,就是问一个项目碰到的难点,如何解决的?然后30分钟左右两个算法题一个easy 一个mid。面试大概是一个小时左右 面试官很友好没有压迫感。面经具体答案整理到一块了,需要的小伙伴,上来面试官介绍部门情况 3min左右。原创 2024-04-15 14:47:22 · 23585 阅读 · 34 评论 -
一分钟学会旋转一个矩阵
给定一个n×n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转 90 度。你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。原创 2024-04-14 22:13:08 · 12815 阅读 · 4 评论 -
巧解螺旋矩阵
给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。原创 2024-04-16 08:30:00 · 12004 阅读 · 3 评论 -
手撕Hard--缺失的第一个正数
😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。公众号:AI Sun,视频号:AI-行者Sun。🎈 本文专栏:本文收录于《深入浅出算法》系列专栏,相信一份耕耘一份收获,我会系统全面的分享算法课程,届时可以拳打字节,脚踢腾讯。最简单的思路,hash表把所有正数存下来,然后遍历hash表,缺失值就找到了。🤓 欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。🖥 随时欢迎您跟我沟通,一起交流,一起成长、进步!,请你找出其中没有出现的最小的正整数。原创 2024-04-11 19:34:51 · 13358 阅读 · 2 评论 -
深处的记忆——最大子数组和
如何不超时呢,题目要求我们是不需要给出子序列的,只需要最大值即可。那么其实就到了动态规划擅长的地方了,也不需要怕动态规划,这个题还是很简单,各位读者往下看。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。题目意思很简单,最暴力的两层遍历能出结果,但肯定会超时。连续子数组 [4,-1,2,1] 的和最大,为 6。是数组中的一个连续部分。原创 2024-04-09 14:18:31 · 14913 阅读 · 0 评论 -
webserver--多缓冲区实现日志系统
的好处是在新建⽇志消息的时候不必等待磁盘⽂件操作,也避 免每条新⽇志消息都触发后端⽇志线程。⽽且最重要的是需要保证⽣产者与消费者的并发,也就是前端不断写⽇志到缓冲区的同时,后端可以把缓冲区写⼊⽂件。🎈 本文专栏:本文收录于《项目推荐》系列专栏,相信一份耕耘一份收获,我会继续分享更多优质项目,届时可以拳打字节,脚踢腾讯。服务器的⽇志系统是⼀个多⽣产者,单消费者的任务场景:多⽣产者负责把⽇志写⼊缓冲区,单消费者负责把缓冲 区中数据写⼊⽂件。传送给后端,相当于批处理,减少了线程唤醒的开销。⾥⾯往硬盘写数据,当。原创 2024-03-29 20:10:29 · 40460 阅读 · 5 评论 -
webserver--基于小根堆实现定时器,关闭超时的非活跃连接
计算机在工作时,我们打开多个网页,但是不使用的时候,系统自动会进入休眠模式,这样会更加省电,节省资源。同样的, 服务器在工作时,建立好连接后,即使你不用,他也会一直为你服务吗?当然不是,不然可太消耗资源了。对于非活跃的用户,达到了设定的时间,那我们就关闭这个连接,等用户再次需要时再重新建立连接。原创 2024-03-29 10:53:05 · 43895 阅读 · 0 评论 -
一题学会BFS和DFS,手撕不再怕
先复习一下什么是BFS和DFS,各位读者接着往下看就能拿下BFS和DFS。原创 2024-03-28 11:01:48 · 40309 阅读 · 0 评论 -
Tire树-不学面试后悔
可以看出,Trie树的关键字一般都是字符串,而且Trie树把每个关键字保存在一条路径上,而不是一个结点中。另外,两个有公共前缀的关键字,在Trie树中前缀部分的路径相同,所以Trie树又叫做。先来一张图,看多少同学在面试中遇到这个题,然后被迫放弃,那就太可惜,因为这个题只要你往下看就会了。结合前缀树的字面意思,再看看题目,也就知道了这个题的背景,接下来写其实就是一些正常的插入查询逻辑。原创 2024-03-28 09:57:38 · 40871 阅读 · 1 评论 -
什么?二叉树的反前序遍历?
看完题目,是不是想着先前序遍历一遍,将所有节点存下来,然后改变一下节点的指针指向,相信大部分人的思路也是这样(代码后面给出),先说。注意到前序遍历访问各节点的顺序是根节点、左子树、右子树。如果一个节点的左子节点为空,则该节点不需要进行展开操作。对当前节点处理结束后,继续处理链表中的下一个节点,直到所有节点都处理结束。,其实掌握前中后序遍历已经可以解决90%的题了,当然你肯定想学的更多。代码非常的简洁,不过需要深刻理解这个递归过程。因此,问题转化成寻找当前节点的前驱节点。,就得到了题目的答案。原创 2024-03-22 12:18:34 · 24222 阅读 · 0 评论 -
LeetCode hard也就这么回事
老样子,先贴我的图,可以说是又快又好,不过这里原题给的是子链表有序(常规写法也能写,不难),如果子链表无序,那各位读者应该是焦头烂额+汗流浃背了。这个题,其实看完我上一篇分享可以立马写出来了,思路还是一样,先转换成数组存放,再排序,再存回链表中(思路很简单)请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。将它们合并到一个有序链表中得到。原创 2024-03-20 17:20:52 · 50292 阅读 · 0 评论 -
链表排序?看完你也能手撕
我的思路:正常排序大家都会写,链表排序呢,正是因为他没有随机读取的原因,两层遍历用时很久。那我们把他转换成数组,排序完,再转回来不就行了么?先贴上我的通过页面,用时和内存都算前列,超过93.12%,不可思议,因为我的思路很简单,代码也就几行。再看官方的代码和时空大小,代码特别长,非常容易写错,而且性能表现平平无奇。ac代码(详细注释)原创 2024-03-20 16:35:54 · 27113 阅读 · 0 评论 -
深入浅出Reactor和Proactor模式
工作方式:Reactor模式使用一个事件循环/事件轮询器(通常是主线程),负责监听和分发IO事件。当有IO事件发生时,Reactor会调用相应的处理函数进行处理。工作方式:Proactor模式使用多线程来处理IO事件。一个线程负责发起IO操作,当操作完成后,另一个线程会收到通知并处理完成的IO操作。是两种常见的设计模式,用于处理事件驱动的并发编程。它们在处理IO操作时有着不同的工作方式和特点。原创 2024-03-19 15:17:40 · 53445 阅读 · 0 评论 -
TCP和UDP可以绑定同样的端口吗?
不过这里有种特殊情况,0.0.0.0:8080和192.168.1.1:8080,这里也是会报错“Address already in use”,因为0.0.0.0是一个特殊地址,这里省去不知道的朋友去GPT了。其实问题的本质就只用抓住一个,bind()的时候靠的是什么?(如192.168.1.1:8080和192.168.168.1.2:8090)这个是最普通的情况了,当然是可以绑定成功的。,可以说是两个完全独立的模块,因为传输层的端口号的作用,仅仅是为了区分同一台主机上的不同应用程序。原创 2024-03-19 14:59:16 · 53104 阅读 · 0 评论 -
LeetCode链表hard 有思路?但写不出来?
刷过leetcode的hot100,应该对这个题都有思路,但是链表的这个题它为什么能算hard,还是因为大家写的通过率不高,思路看着不难,但其实里面很多细节,自己手写起来会有很多问题,那我们来捋清一下思路。做链表的题目,首先别怕多创建指针,用就完事了,实现翻转,tail尾部用一个指针存放他的下一个next,head头节点也用一个指针指向,然后在翻转过程中需要一个指针用于迭代。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。个节点一组进行翻转,请你返回修改后的链表。原创 2024-03-18 23:25:00 · 29055 阅读 · 0 评论 -
满足条件的01序列(大厂机考题)
给定 n个 0 和 n个 1,它们将按照某种顺序排成长度为 2n的序列,求它们能排列成的所有序列中,能够满足任意前缀序列中 0的个数都不少于 1的个数的序列有多少个。输出的答案对 1e9+7取模。原创 2023-12-01 17:41:42 · 21265 阅读 · 1 评论 -
容斥原理:能被整除的数
给定一个整数 n和 m个不同的质数 p1,p2,…,pm。请你求出 1∼n中能被 p1,p2,…,pm中的至少一个数整除的整数有多少个。原创 2023-12-02 12:02:49 · 30368 阅读 · 1 评论 -
博弈论:Nim游戏
给定 n堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。原创 2023-12-03 16:06:42 · 21547 阅读 · 1 评论 -
集合-Nim游戏(面试hard博弈论)
给定 n堆石子以及一个由 k 个不同正整数构成的数字集合 S。现在有两位玩家轮流操作,每次操作可以从任意一堆石子中拿取石子,每次拿取的石子数量必须包含于集合 S,最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。原创 2023-12-08 18:25:35 · 30376 阅读 · 0 评论 -
拆分-Nim游戏(字节手撕题)
给定 n 堆石子,两位玩家轮流操作,每次操作可以取走其中的一堆石子,然后放入两堆的石子(新堆规模可以为 00,且两个新堆的石子总数可以大于取走的那堆石子数),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。原创 2023-12-11 15:56:57 · 55336 阅读 · 1 评论 -
01背包和完全背包
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。原创 2023-12-23 16:36:48 · 56223 阅读 · 2 评论 -
多重背包和分组背包
优化方法就在于不用枚举所有的方式,只要包括可以组成他所有数的“子数”(这个表达方式可能不太对),例如7,我们只需要插入1 ,2,4 就可以组成7以内的所有数,这里想一下二进制的表示方式。其实就是将多重背包问题转换成01背包问题,可以这么想:每个物体有多个,那么我把所有拿物体的方式枚举出来添加到原来的问题组上,那么所有的物体就变成了数量唯一。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。有 N种物品和一个容量是 V 的背包。原创 2023-12-23 17:06:23 · 47188 阅读 · 2 评论 -
Socket编程(头脑清晰,防止过载)
加上之后代码(代码量大的时候)会显得臃肿,没有逻辑,报错和codereview也不方便,所以在写的时候可以封装起来,因为bind(),aceept()都是小写的,我们可以写成大写,再将报错信息写进去,这样代码就会简洁很多。这里有个生动的例子,也是听课听到的:比如去某二楼洗脚,大厅接待的人是第一个socket,而进行后续活动的人,是大厅接待的人(第一个socket)等待客户来了之后分配的(第一个socket监听信息分配socket)。第一次写可以看着上面的图写,然后写多了其实就不用看着上面的图了。原创 2023-12-24 17:00:00 · 58285 阅读 · 1 评论 -
FEB选择(蓝桥杯JAVA C组)
有一个长度为 N 的字符串 S,其中的每个字符要么是B,要么是E。我们规定 S 的价值等于其中包含的子串BB以及子串EE的数量之和。例如,BBBEEE中包含 22 个BB以及 22 个EE,所以BBBEEE的价值等于 44。我们想要计算 S 的价值,不幸的是,在我们得到 S 之前,约翰将其中的一些字符改为了F。目前,我们只能看到的字符串 S,对于其中的每个F,我们并不清楚它之前是B还是E。请你计算,的 S 有多少种可能的价值并将所有可能价值全部输出。原创 2024-01-05 17:54:15 · 33305 阅读 · 1 评论 -
填充‘?’01串(字节面试题)
有一个长度为 n 的 0101 串,其中有一些位置标记为?,这些位置上可以任意填充0或者1,请问如何填充这些位置使得这个 0101 串中出现互不重叠的00和11子串最多,输出子串个数。原创 2024-01-06 16:15:58 · 21624 阅读 · 1 评论 -
每天拿小苹果(提高思维系列)
小 Y 的桌子上放着 n 个苹果从左到右排成一列,编号为从 1 到 n。小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第 1 个苹果开始、每隔 2 个苹果拿走 1个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。小苞想知道,多少天能拿完所有的苹果,而编号为 n的苹果是在第几天被拿走的?原创 2024-01-06 18:18:50 · 33260 阅读 · 1 评论 -
公路站点加油
小苞准备开着车沿着公路自驾。公路上一共有 n 个站点,编号为从 1 到 n。其中站点 i与站点 i+1 的距离为 vi 公里。公路上每个站点都可以加油,编号为 i 的站点一升油的价格为 ai 元,且每个站点只出售整数升的油。小苞想从站点 1 开车到站点 n,一开始小苞在站点 1 且车的油箱是空的。已知车的油箱足够大,可以装下任意多的油,且每升油可以让车前进 d 公里。问小苞从站点 1 开到站点 n,至少要花多少钱加油?原创 2024-01-16 17:55:14 · 30908 阅读 · 1 评论 -
蜗牛竹竿爬行
这天,一只蜗牛来到了二维坐标系的原点。在 x 轴上长有 n 根竹竿。它们平行于 y 轴,底部纵坐标为 00,横坐标分别为 x1,x2,…,xn。竹竿的高度均为无限高,宽度可忽略。蜗牛想要从原点走到第 n个竹竿的底部也就是坐标 (xn,0)。它只能在 x 轴上或者竹竿上爬行,在 x 轴上爬行速度为 1 单位每秒;由于受到引力影响,蜗牛在竹竿上向上和向下爬行的速度分别为 0.7 单位每秒和 1.3 单位每秒。原创 2024-01-17 15:09:45 · 30715 阅读 · 0 评论 -
0~9的平均数(python B组)
有一个长度为 n 的数组(n 是 10的倍数),每个数 ai都是区间 [0,9] 中的整数。小明发现数组里每种数出现的次数不太平均,而更改第 i个数的代价为 bi,他想更改若干个数的值使得这 10 种数出现的次数相等(都等于 n/10),请问代价和最少为多少。原创 2024-01-19 13:33:23 · 20872 阅读 · 1 评论 -
欧拉函数(看一遍就会系列)
给定 a,b求 1≤x原创 2024-01-18 09:00:00 · 31035 阅读 · 1 评论 -
C\C++采用epoll实现聊天室
epoll 是一个 Linux 下用于高效 I/O 多路复用的机制,它提供了一组系统调用函数来管理事件和文件描述符。size 参数指定了内核应该为该实例预分配的文件描述符表的大小。这个参数在实际使用中通常可以设置为一个较大的值,表示能够监视的文件描述符的最大数量。这些函数共同构成了 epoll 的基本操作。通过这些函数,应用程序可以实现对大量文件描述符的高效管理和事件处理。1.epoll_create:创建 epoll 实例。创建一个新的 epoll 实例,返回一个文件描述符。下面是epoll的实现图。原创 2024-01-21 10:32:10 · 59115 阅读 · 1 评论 -
Socket实现服务器和客户端(手把手教会)
Socket 编程是一种用于在网络上进行通信的编程方法,以下代码可以实现在不同主机之间传输数据。使用 recv 函数从客户端接收数据,使用 send 函数向客户端发送数据。解决分包、粘包问题-------------使用 close 函数关闭连接的套接字。使用 close 函数关闭连接的套接字。原创 2024-01-22 15:30:00 · 40198 阅读 · 2 评论 -
三国游戏(第十四届蓝桥杯省赛C++C组)
第十四届蓝桥杯省赛C++C组 , 第十四届蓝桥杯省赛JavaC组 , 第十四届蓝桥杯省赛PythonA/C组原创 2024-01-23 10:55:30 · 33871 阅读 · 1 评论 -
松散子序列(第十四届蓝桥杯省赛PythonB组)
给定一个仅含小写字母的字符串 s,假设 s 的一个子序列 t 的第 i 个字符对应了原字符串中的第 pi 个字符。我们定义 s 的一个松散子序列为:对于 i>1 总是有 pi−pi−1≥2。设一个子序列的价值为其包含的每个字符的价值之和(a∼z 分别为 1∼26)。求 s 的松散子序列中的最大价值。原创 2024-01-25 09:45:00 · 30773 阅读 · 3 评论 -
保险箱(第十四届蓝桥杯省赛PythonB组)
小蓝有一个保险箱,保险箱上共有 n 位数字。小蓝可以任意调整保险箱上的每个数字,每一次操作可以将其中一位增加 1 或减少 1。当某位原本为 9 或 0 时可能会向前(左边)进位/退位,当最高位(左边第一位)上的数字变化时向前的进位或退位忽略。例如:00000 的第 5 位减 1 变为 99999;99999 的第 5 位减 1 变为 99998;00000的第 4 位减 1 变为 99990;97993 的第 4 位加 1 变为 98003;99909 的第 3 位加 1 变为 00009。原创 2024-01-26 14:07:32 · 34224 阅读 · 0 评论 -
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)
在一个字符串 S 中,如果 Si=Si−1 且 Si≠Si+1,则称 Si 和 Si+1 为边缘字符。如果 Si≠Si−1 且 Si=Si+1,则 Si−1和 Si 也称为边缘字符。其它的字符都不是边缘字符。对于一个给定的串 S,一次操作可以一次性删除该串中的所有边缘字符(操作后可能产生新的边缘字符)。请问经过 2^64 次操作后,字符串 S 变成了怎样的字符串,如果结果为空则输出EMPTY。原创 2024-01-27 12:11:07 · 30729 阅读 · 0 评论 -
数字三角形(很经典的动态规划问题)
给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。原创 2024-01-28 09:45:00 · 31962 阅读 · 0 评论 -
最长上升子序列(经典动态规划问题)
给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。原创 2024-01-29 09:45:00 · 56756 阅读 · 0 评论 -
最长公共子序列(经典动态规划问题)
给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。原创 2024-01-30 09:45:00 · 46544 阅读 · 0 评论 -
可以举一反三的动态规划问题(最短编辑问题)
现在请你求出,将 A 变为 B 至少需要进行多少次操作。原创 2024-01-31 11:10:42 · 31746 阅读 · 0 评论