腾讯实习面试记录(很详细,挂了)

面试比较自闭,我会尽可能回忆起更多的内容,而且写我当时的回答,希望大家讨论,互相学习!

上来先三道算法题,写完再叫面试官(但不挂电话)

1. 方阵逆时针旋转。

我现在看不到代码了,凭记忆说一下哈。

先想了用额外空间的情况,模拟了一下。
a是原始矩阵(方阵),b是旋转之后的。

自己写一个3*3的矩阵模拟一下,就会发现,
左边是原始矩阵的位置,右边是转置之后的。
(x_a, y_a) ->(x_b, y_b) 表示一个元素在a矩阵的坐标是x_a, y_a,在b矩阵是x_b, y_b。

(0, 0)->(2, 0)
(0, 1)->(1, 0)
(0, 2)->(0, 0)

(1, 0)->(2, 1)
(1, 1)->(1, 1)
(1, 2)->(0, 1)

看出规律了吗?
一个元素在b矩阵的y值是a矩阵的x值,它的x值是3 - x_a - 1。
所以,对每个x,y
b[a.size() - y - 1][x] = a[x][y]
不用额外空间的情况
我最后写的是这种。
思路是,最外层枚举(0, 0), (1, 1)...(matrix.size() / 2, matrix.size() / 2)这种坐标。然后里层按照上面的映射换,一圈下来是个闭环。代码有点难写,我面试时写的估计也得debug一下。

双向链表的头部插入,删除指定值,冒泡排序。

这里为什么是双向链表呢?我觉得双向链表有点降低难度诶。

插入不必讲。

删除,注意一下删除头部的情况,是让head = head->next。
如果是单向链表的话就让一个东西在后面跟着,first = head, second = second->next。
如果找到second->val == v(v是要删除的),那就first->next = second->next。

冒泡排序,我取了个巧,swap相邻元素的val值,而不对链表的结构进行操作

找一个数组的第10大元素

这是一道经典的题了,百度“数组第K大”可以找到答案。

我觉得用堆是最好的办法,但是它题目说用C语言,我认为默认不给我用堆。

大家复习一下快排

先取一个基准数,然后把比这个数小的放左边,比它大的放右边,它放中间。

这里是求第10大,所以我们反过来,把比基准数大的放左边,比它小的放右边。

因为比他大的都放左边了,那它的坐标就表示它是第几大的,假设坐标为i。

如果i == k,那a[i]就是答案。
如果i > k,那说明要找的数在左边。
如果i < k,说明要找的数在右边。

在递归查找即可。

代码不太好写,面试的时候只是写个大概,如果之后还又心情的话再补一下代码

开始问答环节

自我介绍

略了

在百度做的项目

略了
反思,我实习只是做一些边边角角的工作,也不太懂这个项目是干嘛的,技术原理都说不清楚,因为是在百度自研的框架开发的,也没搞懂底层原理,底层的东西大佬都写好了的。唉,惭愧

go是多线程还是多进程

多线程 // 我懵的

多线程编程需要注意什么?

注意如果同时读写数据的话会出问题。//我真不会啊orz,我太菜了。
这里bb了半天,没说明白。

go是怎么抓数据(大概这个意思吧)的

emmm因为我只是调用那个框架的函数,我也不知道啊。(问得好深

这里开始断片,接下来的是连不到一块了,

linux是怎么抓数据的(记不清了,大概这个意思)

不知道。。

在linux用什么命令查看正在运行的端口?

我工作的时候记在笔记里,现在不记得了。

TCP和UDP的区别。

TCP是可靠链接,UDP是尽最大努力的。
TCP是面向连接的,UDP是面向报文的。
TCP有拥塞机制,UDP没有。

(这个没有查,我长期记忆记的这些)

你知道拥塞机制和流量机制有什么区别吗?

我知道拥塞机制,b收到a的数据包之后就会返回一个ack,表示ack序号之前的包都收到了,然后如果丢包过多的话就会降低发包的速度。

流量机制不知道。

浏览器打开一个网址,从浏览器到服务器上的代码,经历了怎样的过程?

先是DNS域名解析嘛,然后到得到了IP地址,就取发起一个HTTP会话到这个地址,然后通过TCP进行封装成数据包,输入到网络层。

在客户端的传输层,把HTTP会话请求分成报文段,加上源端口和目的端口,比如服务器使用80端口,客户端是系统随机出来一个端口。

接下来数据链路层是ARP协议啥的,我记不清了。

Q:然后呢?

然后应该服务器那边有个端口监听,接着。。

我做项目的时候知道我们的框架有一个叫路由的东西,定义了GET和POST,就是访问哪个URL,就会映射到代码的哪个函数,然后就执行。

(emmmm太难了。我太菜了。)

SQL和redis有了解吗?

不了解

map和unordered_map有什么区别?

map的底层是红黑树,unordered_map是hash。

hash怎么实现的?
emmm先说一下为什么要用hash吧,就是有一个key要映射到一个value,然后有一个连续的空间是存value的,通过hash函数,把key映射到这片连续的空间上。

红黑树有什么特点?

先说一下,最开始是二叉排序树,然后发展到平衡树,而红黑树相对于平衡树来说,旋转操作比较少,对于插入删除比较频繁的应用场景,用红黑树比较好,所以map用红黑树。

那它有什么特点呢?

我想想。。比如根节点是黑的。

(其他记不起来了mmp,考这个有意思吗)

C++的多态是怎么实现的?

每个类都有一个虚函数表,然后当父类指针指向的子类对象调用虚函数时,就会找那个表,然后映射到子类定义函数的地址。

还问了一些我记不得了,但我还是理解了这块的。

定义一个main函数,一个f函数,在f函数里声明100万的数组,然后返回。这个程序的编译运行是怎样的?

首先呢,局部变量是放在栈里,100万放到栈里有可能会栈溢出,这个编译可以过,但是运行可能会出现segment fault。

面试官重新说了下,把100万改成10个。还特地强调了CPU的状态

大概就是,调用的时候有个JMP命令,然后跳转到f函数的起始地址,接着开始执行f函数。

执行JMP的时候CPU的状态是怎样的?

哦。。那就是有一个寄存器存当前执行指令的地址,执行到JMP的时候,因为JMP有个地址嘛,就会取那个地址取指令,然后执行。(这是计算机组成原理的知识吧。。我记起来一些)

知道用户态和内核态嘛?

知道
可以说一下吗?
内核态能执行的指令权限最高,而用户态的权限较低。

那你用户态调用内核态的函数时,是怎样实现的?

我不知道。。。

有100亿个QQ号,肯定有重复的,要求去重。

用布隆过滤器(我还记错记成多隆orz,面试官纠正了一下)
然后blabla说一下原理。

看了这篇文章才知道的
详解布隆过滤器的原理,使用场景和注意事项 - Young Chen的文章 - 知乎
https://zhuanlan.zhihu.com/p/43263751

用布隆过滤器会出现什么问题?
我哪知道,我知道布隆过滤器已经很不容易了。。。哭

大概没有了吧。

反思

要了解业务,我太水了,做项目不认真了解项目背景,只是高T派过来任务,然后我去coding。像以前刷题一样做需求,是远远不够的。

要了解一下底层底层没了解,不知道调的框架底层是咋实现的。

这段时间主要花在算法上了,主要是上次被wxg的算法整自闭了。

上次面试顺便记一下

是wxg的,也是上来就四道算法题,
第1题当场写的有Bug
第2题提示之后才做出来(其实就是中序遍历,但我太久没复习数据结构了),
第3题因为做过所以直接秒。
第4题写了个假算法

于是面试结束了。。。
题目如下:

链表的奇偶合并。https://leetcode-cn.com/problems/odd-even-linked-list/
1->2->3->4->5变成1->3->5->2->4

二叉排序树求第k大元素。
https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/

装雨水问题https://leetcode-cn.com/problems/trapping-rain-water/

类似这道用rand7()求rand10(),只是数字不一样。

https://leetcode-cn.com/problems/implement-rand10-using-rand7/

#腾讯暑期实习##腾讯##实习##C++工程师##面经#
全部评论
楼主什么岗位呢?
1 回复 分享
发布于 2020-03-11 00:53
不好意思,我之前说的有点问题,正确的应该是这样:     // 顺时针旋转     void rotate(vector<vector<int>>& matrix) {         int n = matrix.size();         if (n < 2)return;         //1. 交换对角元素         for (int i = 0; i < n; ++i)         {             for (int j = 0; j < i; ++j)             {                    swap(matrix[i][j], matrix[j][i]);             }         }         //2. 每一行逆序         for (int i = 0;i < n;++i)         {             reverse(matrix[i].begin(), matrix[i].end());         }     }          //同理:若需要进行逆时针翻转,则先对每一行进行逆序,然后交换对角元素
1 回复 分享
发布于 2020-03-11 11:40
太难了,我越学越自闭了。 为什么我这么菜。。
1 回复 分享
发布于 2020-03-11 15:33
最后一个可以考虑 用 bitmap
1 回复 分享
发布于 2020-03-11 17:18
看我帖子,投我们这里
1 回复 分享
发布于 2020-03-11 20:41
群友暖贴
点赞 回复 分享
发布于 2020-03-10 23:41
学习了
点赞 回复 分享
发布于 2020-03-11 00:06
你什么时候投呀,我为啥都没有面试通知,是不是简历没过😔😔
点赞 回复 分享
发布于 2020-03-11 07:11
这算法确实有点强,基础知识再补补,试试字节,应该没啥问题
点赞 回复 分享
发布于 2020-03-11 11:00
lz投的那个事业群呢,pcg么?
点赞 回复 分享
发布于 2020-03-11 12:22
楼主,,,钉钉暑期实习要不要康康
点赞 回复 分享
发布于 2020-03-11 12:40
老哥,你这个面试内容和我之前面试的基本一模一样
点赞 回复 分享
发布于 2020-03-11 12:49
拥塞控制和流量控制似乎说反了吧
点赞 回复 分享
发布于 2020-03-11 12:57
腾讯后端不要Java吗😅
点赞 回复 分享
发布于 2020-03-11 13:57
go是什么,go语言吗?我都没听过。不是考C++吗?为什么问了go?
点赞 回复 分享
发布于 2020-03-11 15:35
太难了,我也投了后端开发,还没被捞起来。现在在看计算机网络的东西,操作系统数据库全部不会。。。。算法题也只刷过剑指offer,慌的一批
点赞 回复 分享
发布于 2020-03-11 15:47
老哥,多隆过滤器太秀了 🤣
点赞 回复 分享
发布于 2020-03-11 16:33
答应我,收下这份礼物😘http://m.nowcoder.com/discuss/379708
点赞 回复 分享
发布于 2020-03-11 18:33
wlw?
点赞 回复 分享
发布于 2020-03-12 13:50

相关推荐

部门:QQ客户端,安卓Java开发约面时间:2.122.14一面(简历提到了设计模式)设计模式了解哪些,项目中的工厂模式和策略模式怎么使用的,还了解什么?单例模式的缺点、线程安全、高并发锁竞争怎么解决。实习项目的启动瓶颈优化是怎么做的。Java八股,反射,代理,集合,jvm内存分区,分代垃圾回收、多线程资源共享怎么做两道题,有效的括号,最大连续子数组和,写的时候有点卡壳,不过最后都a了2.17二面实习的就问了个SQL语法树解析可能是看我简历是Java后端的,没提起来兴趣问我。随便问了一些八股,OS进程和线程的区别,线程之间通信的方式,Java里面怎么控制共享资源,数组和链表的区别。算法,两数之和,不能用hashmap,nlogn,排序双指针秒了二叉树右视图,a了问我愿不愿意转客户端,什么时候能来实习2.19三面第一段实习为什么离职,在百度为什么还来找实习,实习你觉得最大的收获(排查线上错误),实习的规划,如果你是ld怎么规划团队目标接触过安卓客户端吗?对安卓客户端开发的理解对大模型的理解和应用(实习做的这个),平时除了学习工作有没有用大模型思考其他问题,对deepseekr1的理解(实习做的),之后的规划无算法,半小时闲聊局反问部门主要业务之后可能一直在排序,我经历是后端的,可能对我兴趣不大2.24晚上#腾讯#&nbsp;流程结束#腾讯实习# #腾讯实习基地#
云边有个小卖铺儿:我觉得可能是觉得已经在百度了还找实习,觉得不稳定,我前两天面百度测开,感觉回答的还可以但是挂了,想起来当时面试的时候面试官问我有没有投其他厂的实习,我说晚上有腾讯三面,可能是觉得不稳定不想要
查看15道真题和解析
点赞 评论 收藏
分享
02-19 22:38
门头沟学院 Java
2025/2/14一面项目亮点(面试官明白之后就没问了)说&nbsp;JAVA&nbsp;里面的那个反射,它的原理是什么?它能够反射哪一些类别的内容呢?&nbsp;&nbsp;JAVA&nbsp;里面的多线程有哪些实现方式呢?&nbsp;&nbsp;线程池有几个拒绝策略,分别是什么呢?&nbsp;&nbsp;注解注解里面它有四种标准原注解,你了解吗?那你知道注解吗?注解它是做什么用的呢? Java对象,我想实现序列化和反序列化,可以继承什么接口? 反系列化就另外一个接口。Java垃圾回收机制,你能够讲一讲吗?垃圾概念,垃圾回收算法。我再问几个计算机基础相关的问题,比如说https,它为什么是安全的呢? 它其实涉及到对称加密,也涉及到非对称加密两种加密算法,它都涉及到。为什么呢? 好的&nbsp;TCP&nbsp;有两个概念是跟相关的哈,一个是流量控制,一个是拥塞控制,这两个概念你能够分别简单的描述一下。它(拥塞控制)有大概的具体过程吗?你们有没有记得它这个算法大概涉及到什么? 那流量控制呢? 什么是哈希表,然后怎么解决哈希冲突? 好的&nbsp;b&nbsp;树跟&nbsp;b&nbsp;+树有什么区别?&nbsp;&nbsp;进程间的通讯方法有哪一些呢?&nbsp;&nbsp;管道有什么缺点吗?&nbsp;&nbsp;线程锁多线程同步的时候,我们用的锁锁。你知道的有哪些锁?&nbsp;自旋锁能描述下吗?数据库的话,我们会建索引,是这个建索引的目的是什么?数据库的索引,它的底层数据结构一般有哪一些呢? 事务四个隔离级别?快排的大概原理是什么? 设计模式,你了解过哪一些呢?&nbsp;观察者模式?整型数组现在有个整型数组,我想找出里面重复次数最多的值,可以怎么样来实现呢?&nbsp;(第一种方法,hashmap,第二种方法,排序,然后找)性格特点?补充一道题:tcp三次握手,四次挥手?算法:无重复最长子串。反问2025/2/17二面忘了录音了~问的不是八股,而是底层的东西算法:给你1-100数,返回一个100的数字,含有这100个数,要求随机顺序。#牛客AI配图神器##面经#
查看28道真题和解析
点赞 评论 收藏
分享
03-08 15:24
深圳大学 C++
#腾讯求职进展汇总##面试常问题系列#一面回忆版投的游戏客户端被QQ客户端捞起来项目三个,一个OpenGL三维渲染,一个微信小程序后台(curd凑数的),一个虚幻5demo问题1.自我介绍,介绍项目,我聊的是OpenGL那个(说了模型文件是自己读的,还有shadowmap,mipmap)2.obj文件里面数据什么样,都是什么类型的3.纹理用的什么(png),压缩纹理了解过吗?(没听说过,后面下去查了下)4.mipmap干什么的,怎么确定什么时候用哪一张,有什么优化(双线性插值,超采样)5.双线性插值怎么实现的,mipmap图片怎么生成的。6.为什么用phong模型不用pbr(说pbr太难了选的phong,要不然估计还得追着pbr问半天)下面是正常八股7.TCP怎么避免拥塞8.http都是用的TCP吗(http3不是,用的UDP)9.那http3用UDP怎么保证可靠传输(QUIC协议包装过一次,聊quic原理)10.进程和线程聊一下11.操作系统给进程分配的空间结构什么样(32系统1g内核,堆栈,.bss&nbsp;.data那些)12.2g的物理空间,但是给进程分配了4g空间发生什么(从虚拟内存原理那块说明)13.C++&nbsp;volatile关键字有什么用14.C++函数调用约定了解过吗(没有)然后是手撕,剪绳子。这题需要有点数学直觉。我开始没什么思路,写了个超级大暴力(没过),后面面试官提醒可以用dp,想了个O(N^2)的做法但是题目里面说有O(N)的做法(要数学验证)。我问面试官咋写他也没直接告诉我反问;据我了解网络上对客户端风评都不怎么样,怎么理解回答:小公司都是curd,我们腾讯当然不一样(笑)等了一天之后过了
点赞 评论 收藏
分享
评论
20
145
分享

创作者周榜

更多
牛客网
牛客企业服务