23.3.13加上了美团后端面经偷懒了几个月所以现在才发,只记录了一部分趋势与网易在另外2个帖子,另外写了C++的设计题,比如手写string这种https://zhuanlan.zhihu.com/p/589795989雷火-服务端只记了几个没回答上的一面选择题加最基础的八股,三次握手四次挥手那种智力题,1024盏灯,第一次逐个电量,第二次按2,4,6…第三次3,6 9…最后几盏亮着数据结构的前缀中缀几个木棍凑成长度n,求出一种组合:用dp,这题出现多次了友塔用户游戏卡,觉得是服务器的问题,怎么排查发牌,4个人,牌有4种色号,13个数,怎么记录每个人的手牌,占用内存尽可能小,我说用二进制,每个牌6位,但还有更优解出现一次的数,两个出现一次的数(剑指原题)map取下标和find的区别,底层:如果a不存在,取下标会自动赋值,有风险芯原问了指针的作用,const的作用指针和引用的区别volatile的作用指针就是指向一块内存的变量,可以改变内存中的值。传递类指针,节约内存const常量,希望值不变,在函数中修饰形参,表示不修改形参;修饰类函数,表示不修改成员变量;常量指针,指针常量字节-电商-客户端一面45min:网络部分:1.Https详解、http个版本区别、get和post区别,put?2.键入url的过程-很喜欢考这个3.tcp的差错控制,拥塞控制系统:1.进程调度2.详解共享内存,管道题目:Z字层序遍历二面45min:如何提升媒体上传速度和成功率http响应报文的搭建设计模式,讲几个乱序数组找出所有满足前边所有数都更小,后边所有数字都更大的值,比如1 3 5 2 9的1和9三面:打印螺旋数组短url转长url(设计题用户态和内核态,多进程和多线程,上下文切换的消耗对比,进程间通信的方式字节-视频云-客户端一面60min:计网和操作系统都是八股虚函数实现拷贝构造函数题目:改错、生产者和消费者二面:1.手写String2.3个线程打印1、2、33.LRU然后寄了讯飞一面1h:STL的迭代器失效(插入删除页表的一个数据结构?什么时候分配物理内存(读写的时候拷贝构造的循环(形参必须是引用,否则会循环拷贝项目中,工作线程如何发送响应报文同步机制二面:综合面,以项目为主,问到了深度学习的项目询问薪资期望,工作地点招银科技-后端一面:1.一堆八股数据库,mysql的事务的特性;一致性是什么意思(答得不好3.项目:怎么确定是发送图片还是视频?按键+html的action字段,然后从url中来判断二面:说我一面面评不错,开奖也还行,应该是第二档斐波那契数列,两种写法递归有的函数要经常调用怎么办呢?(说了inline,写成迭代)面试官表示想说的是缓冲区,我说用数组或者哈希来存,让我在代码的递归写法下写一下,搞定了2G数据,50MB内存,找出不重复的数(哈希分桶华为一面:八股:C和C++的区别等算法:hua**wei,删除*和左边最近的字,用栈秒了另一道口述思路,力扣低频题,忘了具体是哪个笔试题复盘二面:项目算法:质因数的个数,秒了C++八股,内存泄漏,多态面试问的都是秒,然后开个13级[尴尬]美团-后端开发美团后端以Java为主,如果用其他语言去面试,就会被面试官拷打数据库。最早的一次面试,被按在地上锤一、自我介绍,相关项目(竞赛),语言1.python和C++的区别    python是解释型语言,先把源码转换成字节码文件,再由python虚拟机一条一条执行,和cpu之间多了解释器;    C++是编译型语言,二进制2.python面向对象有什么特点    不知道3.面向对象的特点4.C++如何实现多态    虚函数,说了虚函数表和虚指针5.C++的指针和引用的区别    解释:指针指向一块内存,内容是所指内存的地址,引用是某块内存的别名    区别:指针是实体,引用是别名引用使用时无需解引用,指针需要引用不可变,指针可以引用不为空,指针可以引用没有const,指针有二、操作系统1.进程和线程的区别,线程享有进程的哪些资源进程是系统分配的最小单位,线程是调度的基本单位进程之间相互独立,线程共享进程进程开销大,线程开销小2.进程的调度算法    先来先服务,最短作业优先,高响应比优先,时间片轮转调度,多级反馈队列优先解释每个算法大概什么情况3.什么是死锁,如何解决死锁,写一个死锁出来互斥,持有并等待,循环等待,不可剥夺解决方法:设置等待时间、资源顺序获取pthread_mutex_t mutex_A = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_t mutex_B = PTHREAD_MUTEX_INITIALIZER;void* threadA(void *data){    //获取互斥锁A,然后睡眠一秒,再获取B    cout << "thread A waiting get ResourceA" << endl;    pthread_mutex_lock(&mutex_A);    cout << "thread A got ResourceA" << endl;        sleep(1);        cout << "thread A waiting get ResourceB" << endl;    pthread_mutex_lock(&mutex_B);    cout << "thread A got ResourceB" << endl;    pthread_mutex_unlock(&mutex_B);    pthread_mutex_unlock(&mutex_A);    return (void *)0;}void* threadB(void *data){    //获取互斥锁B,然后睡眠一秒,再获取A    cout << "thread B waiting get ResourceB" << endl;    pthread_mutex_lock(&mutex_B);    cout << "thread B got ResourceB" << endl;        sleep(1);        cout << "thread B waiting get ResourceA" << endl;    pthread_mutex_lock(&mutex_A);    cout << "thread B got ResourceA" << endl;    pthread_mutex_unlock(&mutex_A);    pthread_mutex_unlock(&mutex_B);    return (void *)0;}int main(){    pthread_t tidA, tidB;        //创建两个线程    pthread_create(&tidA, NULL, threadA, NULL);    pthread_create(&tidB, NULL, threadB, NULL);        pthread_join(tidA, NULL);    pthread_join(tidB, NULL);        printf("exit\\n");        return 0;}4.linux:给定一个日志文件,找出给定的一句话,并高亮:都没听说过tail -f 日志文件 | perl -pe 's/(关键词)/\\e[1;颜色$1\\e[0m/g'# tail 从尾部查看,用于查看日志#perl -pe 自动执行脚本5.知道哪些设计模式?单例模式,外观模式,观察者模式。。。6.写一个单例模式看看,为什么要加两次锁?(写反了,应该是双检测single* single::getinstance(){ if(p == nullptr){  pthread_mutex_lock(&lock);  if(p == nullptr)   p == new single;  pthread_mutex_unlock(&lock); } return p;}三、数据库1.关系型数据库和非关系型数据库的区别:关系型数据库最典型是数据结构是表,易于维护,使用方便,支持复杂操作,但是读写性能差,灵活度欠佳,硬盘IO是瓶颈非关系型:是一种数据结构化存储方式的集合,比如redis      格式灵活,速度快,成本低  但是  使用成本高2.如何优化索引:前缀索引:用某个字符串的前几个字符建立索引覆盖索引:二级索引能查到的数据,避免回表主键自增:追加操作,不需要移动数据索引最好not null:难优化,null没有意义但会占用物理空间防止索引失效:转到问题43.索引必须是唯一的吗    不是,唯一索引必须是唯一的,普通索引没有要求。主键必须是非空的,唯一的4.什么情况索引会失效    左右模糊匹配,表达式、函数、类型转换,最左匹配,(漏了)where的or中左边是索引列,右边不是5.最左匹配是什么,给定(a,b,c),如果只有a和c符合最左匹配吗应该是不同的版本处理不一样,5.5版本中,a走索引,找到主键值后开始回表,到主键索引读数据行,然后作对比c;5.6之后有一个索引下推过程,可以在索引遍历过程中,对索引包含的字段先判断,直接过滤掉不满足条件的记录,减少回表次数)6.性别能作为索引吗    不行,区分度太小,如果索引的区分度小,优化器会进行全表扫码四、redis1.redis的数据结构1.1有序集合和无序集合各能实现什么功能,说一下如何实现 ——没用过啊有序集合:排行榜;实现:可能想问redis的指令? 新增可以使用ZINCRBY 查看最大的可以用ZREVRANGE无序集合:点赞;实现:key是文章id,value是用户id拓展:共同关注,抽奖1.2有序集合的底层:快表,快表的结构2.redis为什么快,redis为什么单线程但还是很快:IO多路复用    基于内存,高并发,单线程避免多线程的竞争,也不会导致死锁,IO多路复用3.雪崩、击穿、穿透什么什么,如何解决:雪崩:大量缓存数据在同一时间过期,或者Redis故障宕机,有大量用户请求方法:均匀设置过期时间,设置过期时间时加上一个随机数击穿:热点数据过期方法:互斥锁,保证同一时间只有一个业务线程更新缓存不给热点数据设置过期时间,后台异步更新缓存→ 如果热点数据一直不过期,但失去热度怎么办(差不多这意思,因为一开始只说了不设置过期时间,没有说后台更新要更新缓存)或者在热点数据要过期前,提前通知后台线程更新缓存以及重新设置过期时间穿透:既不在缓存也不在数据库限制非法请求;缓存为空或默认值;布隆过滤器如何快速判断数据是否存在→怎么设计布隆过滤器?不会4.如何保持数据库和缓存的一致性数据库和缓存如何保证一致性?旁路缓存写:先更新数据库再删除缓存读:先读缓存,如果未命中则去数据库中读,并写到缓存中如果对缓存命中率有要求,则先更新数据库,再更新缓存。但这样会有不一致的情况,所以可以1,更新缓存前加上分布锁。2,更新完缓存后,给缓存加上较短的过期时间,即使有错也能很快过期五、情景40亿数据,给一个数字,查找是否在里边:bitmap 位图40亿数据需要40亿bit,大约500MB内存,用bit来表示这个数据是否存在,1表示存在,0表示不存在,时间复杂度O(n)具体:读入40亿个数,设置对应的bit位,再输入要查询的数,查看对应的bit位是否为1计算$4010^9 /8/10^{-3}=510^5KB=500MB$算法:寻找峰值:二分,要考虑边界二叉树的层序遍历,用迭代做了
点赞 16
评论 7
全部评论

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹 是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹 待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹 能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥 内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招
点赞 评论 收藏
分享
11-03 14:57
西北大学 营销
Belltrix:其实就是每根转动一定的角度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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