
S3: 笔试面试
涛歌依旧
毕业后就职于华为和腾讯
展开
-
腾讯面试:你会求二进制中1的个数吗?
大家好,我是涛哥。今天,我们来看一道腾讯面试题:已知n是一个非负整数,求其二进制中1的个数,要求算法效率尽可能高。这个题目具体什么意思呢?我们假定n = 20,则其二进制为:10100,那么二进制中为1的个数是2个。这道题看似极其简单,但要找到高效的算法并非易事。接下来,我们循序渐进地看具体解法,并做扩展练习。 腾讯滨海大厦夜景常规解法我们可以直接求出n的二进制值...原创 2022-03-13 23:02:32 · 2009 阅读 · 5 评论 -
写了一个多线程服务器(基于非阻塞socket)
大家好,我是涛哥。最近写了一个服务端程序,能与多个客户端进行通信。那么,这个服务端是怎么实现的呢?很简单,它就是很常规的多线程服务器。如果你还不太清楚,那我画个图,你就明白了。三个男生都追一个女生,这个女生又不好拒绝,于是与三个男生之间保持通信关系。 涛哥手绘服务端实现既然是多线程服务器,那么,这些线程肯定是有明确分工的。主线程来处理网络的连接,而通信线程来处理客户端与...原创 2022-02-20 22:47:16 · 1128 阅读 · 0 评论 -
腾讯面试:你会求二进制中1的个数吗?
大家好,我是涛哥。今天,我们来看一道腾讯面试题:已知n是一个非负整数,求其二进制中1的个数,要求算法效率尽可能高。这个题目具体什么意思呢?我们假定n = 20,则其二进制为:10100,那么二进制中为1的个数是2个。这道题看似极其简单,但要找到高效的算法并非易事。接下来,我们循序渐进地看具体解法,并做扩展练习。 腾讯滨海大厦夜景常规解法我们可以直接求出n的二进制值,然后...原创 2022-02-13 21:54:33 · 1375 阅读 · 3 评论 -
腾讯面试:你会倒水吗?
大家好,我是涛哥。今天,我们来看一道非常有趣的腾讯面试题,小学生就能看懂,但并不容易做对。一起来看看题目,挺有意思的:有A和B两个杯子和足够的水,杯子容量分别是9升和15升,试判断,能否量出n升的水,如果能,请编程给出步骤。 涛哥手绘这个题目什么意思呢?我来解释一下:(1)先装满A,再装满B,此时A有9升,B有15升。显然,这就量出了24升的水。说白了,...原创 2022-02-13 21:39:55 · 2596 阅读 · 1 评论 -
阿里面试:妙解三道唯一数题目
大家好,我是涛哥。今天还是元旦假期,在假期吃喝玩乐、酒足饭饱之余,也别忘了锻炼思维哦。我们来看看阿里面试中的三道题目,都跟唯一数有关,层层递进,非常有趣。小学生也能读懂题目的意思,但并不好做。话不多说,早晨起来,手绘一幅。涛哥手绘There is only you inmy heart题目一(简单)在n个整数中,仅有1个整数出现1次,其余的整数都出现了偶数次,求这个仅出现1次的整数。要求时空复杂度尽可能低。分析1:用记录次数的方法,空间复杂度不过关,无法通过阿里的面.原创 2022-01-09 23:32:54 · 1514 阅读 · 4 评论 -
华为面试:判断2的n次方
大家好,我是涛哥。今天,我们来看华为的一道面试题目:如何判断一个整数是否为2的n次方,其中n为非数整数,要求效率尽可能高。这是一道非常典型的面试题目,它有很多发散的形式,比如:如果把上述的2换成3、4、5,该怎么做才能高效呢?接下来,我们从不同的角度分析,并给出上述所有情况的算法思路和代码验证,希望大家有所收获,顺便通过面试。 涛哥在华为松山湖闲逛所拍判断2的n次方2的n次方的判断,是一个比较常见的问题。容易看出,2的n次方的二进...原创 2021-11-15 22:34:56 · 1884 阅读 · 3 评论 -
字节面试:编辑距离该怎么求?
大家好,我是涛哥。又是周末,过去的几天工作日,可能你会忙得焦头乱额,但毕竟是充实的,忙碌才是生活和工作的常态,也值得欣慰。今天,我们来聊一个经典的面试题:编辑距离。无论是面试字节跳动、腾讯还是阿里,编辑距离必须掌握,且要熟练写出代码。 涛哥手绘(老虎与猫的编辑距离)一. 编辑距离简介编辑距离,可以用于度量两个字符串的差异。其含义是:一个字符串到另一个字符串的最少变换次数,其中,变换操作仅涉及...原创 2021-08-28 20:54:24 · 1715 阅读 · 4 评论 -
笔试面试题目:周芷若和并查集
缘来缘起大家周末好,今天来图解一种重要的数据结构:并查集。为什么要聊并查集呢?一是因为它的思路很优美,二是因为它在笔试面试中频繁出现。来看看小米公司的一道面试题目:有 n 个人和 m 对好友关系,如果两个人是直接或间接的好友,则认为他们属于同一个朋友圈,请写程序求出这 n 个人里一共有多少个朋友圈。举例:n=5,m=3,3对好友关系为{{1,2}, {2, 3}, {4, 5}},即1和2是好友,2和3是好友,4和5是好友,则1、2、3属于同一个朋友圈,4、5 属于另一个朋友圈。那么,这5...原创 2021-08-14 15:19:09 · 699 阅读 · 2 评论 -
笔试面试题目:阿里选班长
周末了,抽点时间练习算法,顺便保持对代码的感觉,免得生疏。毕竟,拳不离手,曲不离口。今天,我们来看阿里巴巴公司的一道面试算法题目,初看起来挺简单的,其实不然。题目如下:已知数组中有一个数字出现的次数,超过数组长度的一半,要求找出这个数字。有的人看到题目后就开始做,也能得到正确结果,但无法通过面试,这是为什么呢?且往下看。一.暴力排序排序是最容易想到的一种方法。由于目标元素的次数超过数组长度的一半,所以排序后直接取中间元素就行。阿里巴巴会出这么简单的题目吗?有点搞笑!我们知道,原创 2021-08-14 14:58:04 · 1058 阅读 · 0 评论 -
详解事务、隔离级别、悲观锁和乐观锁
今天,我们来聊数据库事务ACID、隔离级别、悲观锁和乐观锁。无论是在工作中,还是在笔试面试中,数据库相关的问题,总是绕不开,不会的话,很容易歇菜,你懂的。数据库事务场景在银行系统中,数据库事务是必须的。在电商系统中,也是如此。来看下A给B汇款100元的例子,可以看到,A账户扣款100元,此时如果进程崩溃或者机器掉电,那么这100元就没有加到B的账户中,自然会导致用户的强烈投诉:如果先给B账户加钱,然后给A账户扣钱,会怎样呢?可以看到,此时如果进程崩溃或者机器掉电,银行白白给B加了原创 2021-08-14 12:43:35 · 958 阅读 · 0 评论 -
笔试面试题目:三点共线的判断
看腻了认知鸡汤,你一无所获,味同嚼蜡?看累了万字长文,你收藏了事,心事重重?那么,我们一起,上点算法小菜,斟点程序小酒,品味一下短小的趣味算法和程序,别有一番风味。面试题目在本文中,我们要讨论的问题,小学生都可以看懂,却出现在程序员的面试中,是我当时应聘一家游戏公司时遇到的问题,具体题目如下:如何判断三点共线?多么简单直白的题目,可要答好也并不容易。在面试时,我们要扬长避短,在自己熟悉的问题上,可以主动引导深入交流。遇到多种方法时,可采取循序渐进、逐步优化的方式进行介绍,原创 2021-08-14 12:39:38 · 1088 阅读 · 2 评论 -
笔试面试题目:点P是否在三角形ABC内?
一. 前面的话在面试刷题这个栏目中,我主要引入一些典型有趣的题目,跟大家一起分享下思路和解法。有的朋友,不需要面试,那也无妨,看看相关的题目,挺有趣的,也可以保持头脑的灵活。有的朋友,需要面试,那正好,锻炼了思维的同时,顺便刷下题,相当于是一个小检验吧。二. 面试题目今天,我们来看一个很有趣的问题,也是一道阿里巴巴的面试题目:如何判断点P是否在三角形ABC?小学生就能看懂这个题目,那么,该怎么去判断呢?我们第一感觉可能是: 判断BP处于BA和BC之间 判断原创 2021-08-14 12:29:13 · 679 阅读 · 0 评论 -
笔试面试题目:正方形的判断
一. 缘来缘起拳不离手,曲不离口。周末了,来活跃一下思路,保持对代码的敏感。我们来看一道有趣的腾讯笔试题目:在平面内,随意给定4个点,如何判断他们能否组成一个正方形(为简便起见,假设这些点的坐标都是整数)。这个问题,任何初中毕业的学生,基本都能看懂题目,且很容易想出如下4种判定方法: 矩形+邻边相等 矩形 +对角线垂直 菱形 +邻边垂直 菱形+对角线相等 二. 编程实现思考一下,究竟采用哪种判定方式呢?由于4个点的顺序不固定...原创 2021-08-14 12:24:06 · 680 阅读 · 0 评论 -
用valgrind定位内存泄漏
如果准备得不成功,那就要准备失败了。在笔试面试中,遇到内存泄漏的定位问题,如果连valgrind都说不出来,那就很容易歇菜了。总之,无论是为了找工作,还是为了实际工作中的问题,都很有必要熟练使用valgrind,那么,我们一起来看看这玩意儿是怎么回事。原创 2021-02-28 18:44:32 · 2595 阅读 · 4 评论 -
笔试面试题目:平衡二叉树的判断
学如逆水行舟,不进则退。心如平原野马,易放难收。春节假期,基本结束,是该回归正常的节奏了。生活和工作,需要平衡。紧张和松弛,亦需平衡。今天,我们来聊一个笔试面试题目:平衡二叉树的判断。这个问题很简单,写点代码玩一下,一来是找回代码的感觉,二来是找回工作状态的感觉,经leetcode测试无误。原创 2021-02-28 18:40:20 · 2907 阅读 · 0 评论 -
笔试面试题目:求逃跑的猪猪们
腾讯、阿里、字节跳动的面试题,很难当场想出解法。所以,题还是要刷。刷题比刷抖音有趣多了,能培养和拓展思维,预防脑袋生锈。最后,希望大家在刷题中,找到乐趣,你会感叹原来还能这样啊,顺便地,能拿到更好的offer,工资翻倍,福利多多,祝大家面试顺利。原创 2021-02-21 20:11:42 · 2668 阅读 · 0 评论 -
笔试面试题目:单链表的就地反转
当年,在腾讯的校招面试中,我遇到了这个问题,记得当时写得并不好,加上面试官一再追问,我慌了,结果很尴尬。去年,在松山湖的一个饭局上,和业界Android某大佬聊天,他说自己去字节跳动面试,被要求写单链表的就地反转,没有写对。他可是写了好几本Android核心书籍啊,居然被这个问题给卡住了,确实大大出乎我的意料。原创 2021-02-21 20:08:21 · 1961 阅读 · 0 评论 -
笔试面试题目:一文搞定sizeof笔试面试题
在面试C/C++相关的岗位时,sizeof操作符几乎是必考内容,它能检验面试者的基本功,所以,只能全对,不能出错。一起来看看,这些题目,你能全做对吗?说明:如下题目是基于64位平台。原创 2021-02-17 22:04:54 · 1865 阅读 · 4 评论 -
笔试面试题目:相同树的判断
去年十月份起,自己的工作内容发生了一些变化,写代码的时间减少了。新的工作内容,对自己是一个不小的挑战,用上级的话来说:目前还显稚嫩,需要多多提高。诚哉斯言。太阳虽然晒得舒服,但还是得做点正事。于是,找点leetcode题目来玩玩,一方面是保持编程的思路,找找代码的感觉;另一方面也是保持公众号的连续性,持续为读者提供价值。原创 2021-02-17 21:54:55 · 1146 阅读 · 0 评论 -
❤️腾讯面试,万字攻略详解, offer到碗里来❤️
本文一万字,以非腾讯在职人的身份,来聊腾讯面试的流程、攻略和建议,但愿能助有缘人。标题涉及的范围很广,对多数面试腾讯的人而言,都有参考价值,看完本文之后,必有所得。退一步来讲,即便是准备面试其他公司,也有很多问题是相通的,亦可借鉴,有所广益。从毕业到现在,被别人面试过,也面试过别人,大大小小的面试,一两百次,也算久经沙场。原创 2021-01-13 22:05:11 · 52819 阅读 · 288 评论 -
笔试面试题目:对称树的判断
周六,被外面的施工给吵醒了,以往没这种情况啊,不知道他们在干啥。今天,我们来聊一下对称树的判断。 这些年来,我不断地忽悠朋友们去BATH, 促进人才流动,自己也能顺便获取一些好处。 S哥便是我忽悠的目标之一,S哥是某985土木工程专业出身,后来转行做了程序员,去T公司面试,碰到这样一道题目(一看就是leetcode中的easy级别问题): 我们来分析一下这个问题,如下图所示,假定root...原创 2020-12-01 08:31:04 · 3193 阅读 · 10 评论 -
笔试面试题目:编辑距离
编辑距离,可以用于度量两个字符串的差异。其含义是:一个字符串到另一个字符串的最少变换次数,其中,变换操作仅涉及增删改,且每次只能操作一个字符。 编辑距离的应用很广,比如纠错检错: 编辑距离,在笔试面试中会经常涉及到。一朋友最近参加了T公司的面试,便遇到了编辑距离: 编辑距离,是一个典型的动态规划问题。那么,从一个字符串到另一个字符串的编辑距离一定存在吗?这是必然的,暴力方...原创 2020-12-01 08:16:25 · 1945 阅读 · 2 评论 -
笔试面试题目:青蛙跳台与斐波那契数列
今天周末,刚好也是程序员节,来聊一下青蛙跳台与斐波那契数列。很多年前,我在面试T公司的W部门时,遇到了青蛙跳台问题。 问题如下: 有n阶台阶,青蛙每次只能跳跃1阶或2阶,求跳上n阶台阶的方法数。 (1)当n > 1000时,写程序求解。 (2) 求通项公式。 不得不说,要在面试现场解决这个问题,还是有一定难度的。记f(n)为青蛙跳上n阶台阶的方法数,则有:...原创 2020-12-01 08:11:27 · 2759 阅读 · 8 评论 -
笔试面试题目:盛水最多的容器
今天周末,来看G公司的一道面试题: 求max{|i-j|*min{a[i], a[j]}}的值,其中a是正整数数组,i和j的区间为[0, n-1]. 这其实就是leetcode中的“盛水最多的容器”,如下: 鲁迅说:暴力可以解决一切问题。 胡适说:暴力能解决的问题,都不是问题。 因为i和j的可能性是有限组合,所以暴力算法能得到结果,但无法通过面试。 用...原创 2020-11-07 11:04:53 · 4785 阅读 · 16 评论 -
笔试面试题目:求缺失的最小正整数
国庆假期已过半。今天,我们来看一个leetcode问题,也是当年B公司的面试题,有难度。问题如下: 给定一个整数数组,找出其中缺失的最小的正整数,要求时间复杂度为O(n), 空间复杂度为O(1). 输入输出示例如下:输入数组a 输出 [1, 2, 0] 3 [3, 4, 1, -1] 2 [6, 7, 8, 12] 1 我们先来分析一下: A. 假设a中的n个元素占...原创 2020-11-07 11:00:47 · 3282 阅读 · 9 评论 -
0/1背包问题与最大收益
池塘的水满了,雨也停了,田边的稀泥里到处是泥鳅。 不过,今天不捉泥鳅,而是去捉螃蟹,待会儿太阳小点就出发。拿个袋子,当然是捉得越多越好,于是想到类似的经典问题: 小偷夜入宝地,可偷宝贝甚多,然背包承重有限,最大收益几何? 这是一个典型的0/1背包问题,为什么叫0/1背包问题呢?因为对于一件宝贝,小偷要么选择偷它,要么选择不偷它。小偷陷入了左右为难的境地,我们对小偷的困难进行分析和具体化。 ...原创 2020-11-07 10:56:38 · 2800 阅读 · 6 评论 -
笔试面试题目:求丢失的猪
今天国庆,也是中秋,实在难得。在21世纪的100年内,仅有4年是这样的。今天在家里,陪家人,做饭吃,干家务活,看点闲书,顺便写点东西,待会出去逛逛,然后回来跑跑步。 校园秋招陆续开始了,祝在校同学拿到心仪的offer,也祝社招的同学跳槽顺利。 今天,我们来看下A公司的一个面试题: 有n只猪,用车拉到菜市场去卖,这群猪的身上分别贴了1~n的编号,突然,有一只猪从车上跳下溜走了,求溜走的猪的编号。 ...原创 2020-11-07 10:50:15 · 8169 阅读 · 23 评论 -
笔试面试题目:判断单链表是否有环
之前在U公司的笔试中,碰到这样一个问题: 判断单链表是否有环。 首先来看这样一个常识:现实中的环路与单链表的环路,有什么不同呢? 显然:现实中的环路,可以有两个方向,要么循环,要么逃出。然而,在单链表中,指针next只可能有一个指向,所以环路链表必定永远循环,没有出口。如下图所示: 回到问题本身,怎么判断单链表是否有环呢?算法1:标记法 最容易想到的肯定是标...原创 2020-11-07 10:46:49 · 2170 阅读 · 9 评论 -
一网打尽海量数据面试问题
周末,深圳,又是大雨。今天来聊海量数据。 海量数据,是BAT笔试面试中的常客,TMD也纷纷效仿,其余公司也紧随其后。在实际工作中,也确实会涉及到类似问题。 海量数据,从时间上讲,难以快速处理。从空间上讲,难以一次加载到内存。针对海量数据,我们需要对时间和空间进行预估,而不是一根筋蛮力处理。 海量数据处理的常见思路如下: 1. 哈希分治,重新分类 2. hash ma...原创 2020-11-07 10:42:45 · 2517 阅读 · 2 评论 -
笔试面试题目:删除单链表的当前结点
之前,参加M公司的笔试,遇到这样一个问题: 有一个足够长的单链表,链表中间有一个结点的指针是p, 删除该结点。 这个问题有点奇怪,要删除p指向的结点,也就是把30的结点删除,然后把20和40连接起来。可问题是,不知道链表的头指针,也不知道指向20的结点指针,这就为难了。 可以从理论上证明,此题无解。 但是,理论上不可解的问题,实际上就真的不可解吗?未必!我来举个例子: 乞丐:求求你给我1...原创 2020-11-07 10:35:19 · 2036 阅读 · 7 评论 -
最大值最小值算法优化
周天,深圳,大雨。 今天来看一个简单的问题,即同时求最大值和最小值,具体问题和要求如下: 求数组的最大值和最小值,要求比较次数的数量级是O(1.5n). 我们先来看普通的直观解法:package mainimport "fmt"func getMinMax(a []int) (int, int){ if len(a) == 0 { // 异常处理 } min...原创 2020-11-07 10:32:13 · 4249 阅读 · 3 评论 -
笔试面试题目:求海量数据的中位数
中位数,也就是排序后位置在中间的数。中位数是笔试面试中的常客,在N年前T公司的实习生招聘和校园招聘中,两次遇到了这个问题。如果是求海量数据的中位数,那就不太好用上述方法了,因为没法把大文件中的海量数据加载到内存中。那该怎么办呢?原创 2020-10-04 19:44:58 · 4109 阅读 · 9 评论 -
笔试面试题目:两数之和 & 三数之和
两数之和(two sum)是很典型的笔试面试题目,也是leetcode的第一题。为了便于叙述,我把原问题简化一下:给定数组a[N], 判断是否存在两个元素的和为k. 阿里、腾讯、头条的面试官真的好喜欢leetcode. 祝拿到心仪的offer.原创 2020-10-04 19:43:44 · 3028 阅读 · 4 评论 -
笔试面试题目:1000的阶乘问题
大数阶乘问题,是很常见的,来看一下T公司的面试题目: 问题一: 1000的阶乘末尾有多少个0? 问题二: 1000的阶乘有多少位数? 问题三: 1000的阶乘的值是多少?原创 2020-10-04 19:28:18 · 5329 阅读 · 11 评论 -
top-K问题和随机选择算法
之前聊过top-K问题,有朋友反馈说,如果内存能容纳下这N个元素,那么使用堆处理top-K问题,并不是最佳算法。确实如此,在本文中,我们来循序渐进地看下top-K问题的处理思路:1.快速排序算法;2.直接选择算法;3.堆选择算法;4.随机选择算法。原创 2020-10-04 19:25:36 · 2680 阅读 · 1 评论 -
笔试面试题目:判断2^n, 3^n, 4^n, 5^n
F公司的笔试面试题目如下: 如何判断一个正整数是否为2的n次幂,3的n次幂,4的n次幂,5的n次幂?其中n为非负整数。要求:使用四种不同的算法。原创 2020-10-04 19:23:47 · 2718 阅读 · 3 评论 -
动态规划的本质
动态规划,是求解决策最优化的过程,在经济、军事、自动化等领域,都有广泛应用。动态规划的本质就是递推,然而,在有的动态规划问题中,递推并不明显,需要花心思去构建递推关系。原创 2020-09-20 23:43:16 · 3186 阅读 · 2 评论 -
手机号码之基数排序
七大常见排序是:冒泡排序、选择排序、插入排序、归并排序、希尔排序、快速排序和堆排序,它们都是基于比较的排序,时间复杂度最好能达到O(NlogN). 三大特殊排序是:计数排序、桶排序和基数排序,它们是非比较的排序,时间复杂度为线性。 在一些笔试面试题目中,排序算法几乎是必然会涉及到的,尤其是对于校招而言。原创 2020-09-05 12:26:49 · 3992 阅读 · 2 评论 -
华山论剑之桶排序
华山论剑开始,报名名单为:郭靖,黄蓉,洪七公,欧阳锋,欧阳克,周伯通,瑛姑,黄药师,杨康,穆念慈,柯镇恶,尹志平。 要获取所有参赛者的最终排名,该如何设计算法呢?如果用冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序,可能导致一些既浪费时间又浪费表情的比赛。可以考虑把参赛人分为四个水平段位,然后,在相同的水平段位中分别比较,这就是所谓的桶排序。原创 2020-09-05 12:23:45 · 2816 阅读 · 3 评论 -
高考分数排序之计数排序
在社会上摸爬滚打了几年,见识了一些人和事,越发意识到高考的重要性。很多高校和企业在招聘时,都非常看重学历(甚至是第一学历),这种筛选条件很世俗,但从概率的角度来看,合情合理。 高考成绩马上就要出来了,来聊聊与高考相关的算法问题。 问题:参加全国高考数学考试的人数为n, 数学满分为k(k=150), 求数学分数的排序结果。要求:时间复杂度为O(n).原创 2020-09-05 12:22:04 · 3092 阅读 · 4 评论