咸鱼的面经&offer选择

8月开始准备秋招,因为实验室项目的破事,所以字节的实习放弃转正提前离职了。因为觉得面试太累(咸鱼心态),所以只陆陆续续投了6家公司(网易,猿辅导,阿里,快手,腾讯,字节)。结果如下:

  • 网易:意向书——游戏研发(sp)

  • 猿辅导:意向书——大数据开发

  • 阿里:阿里云交叉面挂

  • 快手:意向书——音视频技术中台c++开发

  • 腾讯:teg二面挂

  • 字节:二面结束等结果中

基本上算是尘埃落定了,因为网易之前约的是9月底谈offer,所以今天稍微做个总结,然后请求一下大家的意见~

网易(sp计划——游戏引擎):

一面:

介绍学校项目

问了整整一个小时的c++,都比较基础所以记不上来了,只记得没答上来的一个:动态链接库是怎么计算地址的(got&plt)

bfs寻路的优化(A*算法)

二面:

介绍学校项目

1亿玩家,战斗力为1~100k的整数,要求能够快速更新战斗力并查询战斗力排行(树状数组)

在一个圆内随机取点的方法

LRU的实现(当时脑抽了回答了LFU的实现(双map),面试官问为啥不用链表(正确做法),我说链表没法维护频率,不能体现最少使用blabla,面试官居然被我说服了,表示你说得对。。。面试完才发现是自己搞混了~)

小节:想做渲染投的游戏引擎,但是面试的时候告诉面试官自己不会图形学,最后被转到游戏研发了

猿辅导(大数据开发):

一面:

介绍学校+实习项目

flink checkpoint原理

kudu:整体架构,数据存储细节,update原理

一些操作系统基础问题:进程线程区别,内核态用户态切换细节啥的。没答上来的:kill和kill -9有啥区别(一个发送SIGTERM,一个发送SIGKILL,SIGKILL不可屏蔽不可捕获)

三数之和

二面:

介绍实习项目

大数据排序:

A:先hash成小文件再在内存中维护最小堆

Q:分成小文件后能不再排序吗

A:不hash,按数字大小分文件,一个文件过大的时候分裂

Q:比分裂更好的策略?

A:先扫描一遍得到统计信息,再根据统计信息确定每个文件的范围

删除单链表中的一个节点

三面:

介绍实习项目

flink checkpoint原理

怎么保证exactly once

给几棵树的点和边,恢复成森林

小节:

虽然实习做的是大数据相关的,但是只实习了两个月,所以对大数据了解得其实很少(只了解flink和kudu),抱着试试的心态投的,面试的时候也很尴尬,sql不会写,mysql,hdfs,hive问就是不了解,java也不会,感觉面试的时候面试官都快没东西问了。。。最后过了主要是因为题做得快,实习项目,kudu,flink了解得比较深(这里感谢实习时带我的前辈给我安排了很多学习原理并总结文档分享方面的工作,收获很大)

快手(音视频中台c++开发):

一面:

智能指针:weak_ptr的作用,怎么解决循环引用,enable_shared_from_this的原理

单例模式

unique_lock和lock_guard的区别

一堆c++细节

http状态码

tcp

最长上升子序列

二面:

学校项目

(fork() && fork()) || fork(),有几个进程

长度为n的无序数组,数字取值为0~n-1,找重复数字

链表翻转(递归,迭代)

三面:

学校项目

tcp和udp

tcp握手挥手

rgb和yuv大小

二维数组,值只能为0或1,要求把所有1所在的行和列全部变为1

设计一个能返回站内最小值的栈

总结:

知识的深度很重要,挂掉的阿里和腾讯面试官对我的评价很相似:广度足够,基础足够,深度不够。算是非常中肯了,因为我在学校的科研工作,学校项目,实习项目和找工作用到的知识几者之间其实都没有什么交集,导致自己啥都会一点,啥都不精。

送阿里面试官的两句话给大家:

1.不用所有的都掌握到有深度,但是你擅长的还是得达到一定水平的

2.不知道没关系,面试更看重临场思考的能力

总之,本咸鱼秋招算是差不多结束了,拿到3个不好不坏,但是方向相差甚远的offer,请各位大佬提供一些建议,非常感谢~

#面经##网易##猿辅导##快手##C++工程师##大数据开发工程师##offer比较#
全部评论
感觉猿辅导挺好的,不加班,哈哈
点赞
送花
回复
分享
发布于 2020-09-22 22:38
哇,看到最后阿里和腾讯的评价真的是很有感触了。。  我也投猿辅导一票🤣
点赞
送花
回复
分享
发布于 2020-09-22 22:49
滴滴
校招火热招聘中
官网直投
猿辅导会加班的,建议还是按技术来选
点赞
送花
回复
分享
发布于 2020-09-23 10:08
投猿辅导一票
点赞
送花
回复
分享
发布于 2020-09-23 15:09
猿辅导是不是开的最高
点赞
送花
回复
分享
发布于 2020-09-24 19:29
问一下,楼主,都是线上面试吗?
点赞
送花
回复
分享
发布于 2020-09-29 17:00
又是一年秋招时,看大佬的帖子,猿辅导令人唏嘘。
点赞
送花
回复
分享
发布于 2021-09-01 00:41

相关推荐

投递快手等公司10个岗位
点赞 评论 收藏
转发
先自我介绍,总共45分钟1、专业具体方向是什么2、实习主要做了些什么3、垃圾回收机制4、常用的垃圾回收器5、G1和CMS的区别是什么6、多线程安全怎么做7、volatile和synchronized的区别8、双亲委派模型是怎么样的9、双亲委派的模型,怎么打破10、静态代理和动态代理的区别,动态代理是怎么实现的11、线程池的submit和excute的区别1、返回结果:submit()方法可以接受并返回Future对象,用于表示异步任务的结果。你可以通过Future对象获取任务的执行结果,或者等待任务执行完成。而execute()方法没有返回值,无法获取任务的执行结果。2、异常处理:submit()方法能够处理任务执行过程中抛出的异常。你可以通过调用Future对象的get()方法来获取任务执行过程中的异常,或者通过捕获ExecutionException异常来处理异常情况。而execute()方法无法处理任务执行过程中的异常,异常会被传播到线程池的未捕获异常处理器(UncaughtExceptionHandler)。3、方法重载:submit()方法有多种重载形式,可以接受Runnable、Callable和其他可执行任务作为参数。它们的返回值类型分别为Future、Future和Future,其中T为Callable返回结果的类型。这使得submit()方法更加灵活,可以处理不同类型的任务。而execute()方法只接受Runnable类型的任务作为参数,没有方法重载的选项。12、算法:最长重复子数组(动态规划秒了,然后要我优化时空复杂度)13、喜欢那些具体方面的技术14、分布式产品有哪些15、使用微服务和单体架构的区别16、微服务组件用过那些17、CAP原理18、一般互联网公司会用cap的哪两个19、redis怎么实现分布式架构20、redis集群的原理21、redis扩容怎么办22、redis的可用性怎么保证23、了解其它一些数据库吗24、怎么定位bug的25、线上部署的项目怎么定位bug26、在linux上怎么定位bug,定位bug时常用那些命令27、在linux上磁盘IO过大怎么定位问题所在28、大概可以实习多久29、看你简历上是去深圳,是一定要深圳吗
点赞 评论 收藏
转发
2 10 评论
分享
牛客网
牛客企业服务