快手提前批C++音视频一面二面hr面

8月31日下午2:30hr面
1. 前两轮面试体验
2. 实习情况
3. 为什么选择快手
4. 目前其他公司的情况
5. 对地点的意向
6. 介绍一个图片编解码的小项目
7. 如何自学的
8. 对所投岗位是否了解,为什么选择这个岗位
9. 程序员看源码有什么好处
10. 技术面或hr面问什么问题对于应聘者来说算是有压力的好的面试问题
11. 是否能够来实习
12. 反问:
1)后续流程:1-2周通知最终结果
2)实习要求:最好能实习,不能也没关系,看应聘者个人情况

求快手给个OC啊!!!(好想成为大佬.jpg)


8月27日下午5点二面,全程55min
1. 自我介绍
2. 介绍简历上的项目
3. 手撕代码:
aligment_malloc(size_t size, int k),使用malloc申请size大小的空间,返回mod 2^k == 0的内存首地址
aligment_free(void* p),是否申请的内存
(对这块内容不是很熟悉,吭哧吭哧花了大概半小时写出来了,前面理解题意花了好长时间,后面处理边界问题也讨论了一段时间,太菜了,唉。。。)
不懂这一块原理,真的一时半会写不出来orz...最终实现代码:
#include<stdio.h>
#include<memory.h>
#include<stdlib.h>
#include<math.h>

void* aligment_malloc(size_t size, int k){
    if(size == 0) return nullptr;
    size_t aligment = pow(2, k);
    void *mptr = nullptr, *offsetptr = nullptr;
    mptr = malloc(size + aligment + sizeof(void*));
    printf("malloc address : %p\n", mptr);
    if(!mptr) return nullptr;
    offsetptr = (void*)(((size_t)mptr + aligment + sizeof(void*)) & ~(aligment-1));
    ((void**)offsetptr)[-1] = mptr;
    
    return offsetptr;
}

void aligment_free(void* p){
    if(p){
        free(((void**)p)[-1]);
    }
}

int main(){
    size_t size;
    int k;
    cin >> size >> k;
    size_t aligment = pow(2, k);
    void* ptr = aligment_malloc(size, k);
    printf("aligment address : %p\n", ptr);
    
    printf("free address : %p\n", ((void**)ptr)[-1]);
    
    int b = 0;
    if(((size_t)ptr % aligment) == 0) b = 1;
    printf("address aligment : %d\n", b);
    
    return 0;
}
4. 反问:
1)技术栈和业务内容:快手视频编码相关,语言是C++
2)只考察代码:基本是通过考察代码来看的
3)有什么建议:代码多练习
4)后续的流程:如果通过会有hr通知,后面是hr面

面试体验一般,面试官周围环境比较嘈杂,面试官很严肃,应该是个leader。对代码要求很严,问的也很细。
(好想成为大佬.jpg)

8月17日下午4点一面,全程1h左右
1. 自我介绍
2. 介绍下mysql的搜索引擎(看到我项目跟数据库比较相关)
3. 手撕算法:
1)无重复字符的最长字符子串长度(a)
2)区间长度,有点类似于区间合并(a)
4. 场景题:M*N的巧克力,将其掰成1*1的小块,不能折叠掰,最少需要多少次
我一开始回答是折叠掰(M+N-2)次,提示不能折叠后我就找规律了,发现符合(M*N-1)次
但是最后面试官告诉我使用DP的思路,其实就是将大问题转化为小问题的思路,我讲的时候也说到了,
但是我把这道题当初一般的场景题了,就没考虑到DP,不知道面试官满不满意。
5. 反问:
1)部门业务:音视频编解码,这块我有一定了解,所以跟面试官聊了聊我的看法
2)为什么基本不问基础:一面比较重视代码能力,后续再考察项目和基础
3)流程:如果有下一面hr会一周内或2-3天内通知

面试体验良好,面试官很年轻,很亲切,算法和问题都不难,好评!
(好想成为大佬.jpg)
#快手科技##内推##面经##C/C++##校招#
全部评论
大佬方便给解释一下((void**)offsetptr)[-1] = mptr;这句话的意思吗?😂
点赞 回复 分享
发布于 2020-09-09 21:19
楼主在oc了吗?
点赞 回复 分享
发布于 2020-09-02 16:24
大佬收到结果了吗?
点赞 回复 分享
发布于 2020-08-31 07:08
我们二面的题目一模一样,不过我觉得这个像是原创题,就没有贴出来😅
点赞 回复 分享
发布于 2020-08-28 11:10
楼主两面过后就直接hr了吗?不是说有三轮技术面
点赞 回复 分享
发布于 2020-08-28 06:39
收到下一面通知了吗
点赞 回复 分享
发布于 2020-08-25 09:10
加油,楼主😸
点赞 回复 分享
发布于 2020-08-18 01:31

相关推荐

04-22 23:15
中南大学 Java
时间:4.21公司地点:北京时长:52min做了一些简化,提取了更有借鉴价值的部分1.&nbsp;部门介绍2.&nbsp;自我介绍3.&nbsp;这两个项目你觉得哪个项目复杂度高一些,可以多聊一会4.&nbsp;你这个项目主要是想解决什么样的问题呢5.&nbsp;你刚才说这些方法的话,应该说也是社区内或者说比较常见的一些处理方式了,对吧?我都或多或少都能get到,但是我有一个问题,就是**你做这件事情之前,就是每一个技术的应用之前,你有没有去验证这个技术确实提升了准确率呢**6.&nbsp;我们的这些处理方式是否真正的真的提升了它的准确率。就是我们只是堆砌技术,还是说我们确确实实是提升了这件事情?7.&nbsp;你这一知识库当时怎么选的?你做的知识库是什么类型的知识库?8.&nbsp;那你这知识库里面涉及了哪些方面的内容?比如说文学类的,还是什么科技类的?是什么航天类的等等?有没有就说具体一些?9.&nbsp;那你这个博客内容写的多吗?10.&nbsp;那如果14篇文章的话,而且你这14篇文章看起来所涉及的范围是比较发散的,那么在这种情况下,其实这个rag的检索本身就不容易出现,刚才说的那个检索有问题的情况,这可能本身就不是个问题。11.&nbsp;在我们去真正去做一件事情这的处理的时候,其实我们还是应该先去有一个度量的标准,不然我们优化可能是负优化,我们都不知道对吧?就是说我现在要做&nbsp;rag&nbsp;检索。我要去先做一个度量的方式,然后去验证它的准确率,你应该怎么做?12.&nbsp;你怎么判断问题回答是准确的13.那么我怎么看到线上的这些回答的准确率呢?14.&nbsp;有必要搞多级缓存吗15.&nbsp;好,那首先就多级缓存来说,你觉得,它有什么弊端,还有它有什么优势?这个讲一下。16.&nbsp;我有一个问题,首先其实我们一般认为&nbsp;redis&nbsp;它的那个吞吐是非常高的,而且如果说我们比如说数量很大,Redis&nbsp;它也是支持那个多节点对吧,比如说……&nbsp;不管是哪种方案吧,Redis&nbsp;也可以支持多节点的这种部署,所以在这种情况下的话,我们认为&nbsp;redis&nbsp;从网络压力这一块是没有太大问题的。那么在你看来,有了&nbsp;redis&nbsp;的话,我们还要去引入本地缓存的主要目的是什么?因为刚才你说的只是为了减少网络开销。&nbsp;但是现在我们实际的生产环境中&nbsp;redis&nbsp;的是网络开销&nbsp;其实是没什么太大的问题的。你应该明白我的意思,就是&nbsp;redis&nbsp;网络开销不是它的核心问题,就是我为什么非要引入本地缓存17.&nbsp;我看后面你还自己写过两个&nbsp;SKILL&nbsp;对不对?能具体展展开一个就是你可能平时,有没有平时用的比较多的,我想知道不是那种为了写而写的那种,就真正能解释你生活中问题的那种&nbsp;SKILL18.&nbsp;你最近面试多吗?19.&nbsp;那八九场的话,就是你觉得你做的自己就是面试,就是相当于面试自己的这种&nbsp;Skill&nbsp;和你真正去面试中拿到的面试题,它相似度高吗?&gt;我是我当时了解到,主要是主要是因为网络开销的问题,进一步提升响应速度20.&nbsp;说实话&nbsp;redis&nbsp;并不存在很大量的网络开销问题&nbsp;&nbsp;对不对?21.&nbsp;我看后面你还自己写过两个&nbsp;SKILL&nbsp;对不对?能具体展展开一个就是你可能平时,有没有平时用的比较多的,我想知道不是那种为了写而写的那种,就真正能解释你生活中问题的那种&nbsp;SKILL22.&nbsp;你最近面试多吗?23.&nbsp;那八九场的话,就是你觉得你做的自己就是面试,就是相当于面试自己的这种Skill和你真正去面试中拿到的面试题,它相似度高吗24.&nbsp;OK,&nbsp;那你觉得你这个&nbsp;SKILL&nbsp;有没有帮你解决到一些实际面试中的问题,有没有确实命中的一些面试中的一些真正的面试题25.&nbsp;对你来说,现在比如经验完经历完这场面试之后,你觉得你的&nbsp;SKILL&nbsp;应该如何提升呢?26.&nbsp;你理解什么叫&nbsp;CAS?27.&nbsp;那它和悲观锁有什么不同?那首先第一个问题就是纯靠CAS就能解释就能实现这个乐观锁吗?28.&nbsp;解释一下volatile的这个关键字的目的和作用29.&nbsp;既然我们提到了CAS操作就一定能保证。并发更新的安全性了。那么我们为什么还要用&nbsp;volatile&nbsp;去修饰这个变量呢?这不多此一举吗?30.&nbsp;好,那继续问&nbsp;CAS&nbsp;里面会有什么问题?就它会有什么其他的什么问题呢?31.&nbsp;你了解&nbsp;CAS&nbsp;的&nbsp;ABA&nbsp;问题吗?32.&nbsp;讲一下怎么解决就可以了33.&nbsp;那现在回到这儿来说就是有乐观锁和悲观锁两种锁,对不对。那么,我什么时候要选择乐观锁?什么时候要选择悲观锁?你看,我们知道&nbsp;JDK&nbsp;里面&nbsp;synchronized&nbsp;的关键字是悲观锁,对吧?而&nbsp;ReentrantLock&nbsp;是个就是这种我们一般认为是&nbsp;CAS+volatile&nbsp;这种乐观锁的方式那么这两种方式的话,你觉得我们在应用中。什么情况下会采用乐观锁?什么时候要采用悲观锁?34.&nbsp;为什么?35.&nbsp;这个我知道好,那现在问一个问题&nbsp;就是说,既然高并发情况下用悲观锁就很好,那我无脑用悲观锁不就完了吗?就是既然说。乐观锁有就是说并发高了,它就不行,自选浪费&nbsp;CPU,对吧?那我无脑用悲观锁,不就&nbsp;OK&nbsp;了吗?不挺好的吗?36.那还有一个问题,就是我们刚才说的这些并发的处理的方式。都是基于一个理念叫共享内存,对吧,相当于都是无论是悲观锁还是乐观锁,我们都相当于是要在对象上加锁,然后限制一些线程的进入和退出,对不对。&nbsp;那么有没有别的方式照样可以实现并发更新的?并发更新的这样的一个方式,就除了共享内存方式,还有没有别的。比如说或者说我这么说吧,就全世界上处理同一个数据的多线程更新的这个问题,只有乐观锁和悲观锁两种方式吗?是非阻塞不能处理吗?因为不管是哪个锁,其实都会进入到一个阻塞的状态,对吧?必须是通过阻塞的方式才能搞实现多线程对同一变量的更新吗?37.&nbsp;手撕环节:[电话号码的字母组合](*******************************************************************)48.&nbsp;反问环节
查看30道真题和解析
点赞 评论 收藏
分享
评论
5
48
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务