资质
当前位置:首页 > 资质荣誉 > 资质
【蓝因子教育】一哥们面试腾讯Linux、 C++后台开发工程师!
来源:安博电竞注册中国官网      发布时间:2024-10-22 06:54:56      


【蓝因子教育】一哥们面试腾讯Linux、 C++后台开发工程师!


  1、C/C++;2、网络;3、操作系统;4、Linux系统;5、MongoDB;6、Redis;7、mysql;8、算法;9、设计模式;10、分布式架构;11、系统设计

  ✿ 什么类不能被继承(这个题目非常经典,我当时答出了private但是他说不好,我就没想到final我以为那个是java的)

  ✿ TCP四次挥手讲一下过程,最后一次ack如果客户端没收到怎么办,为什么挥手不能只有三次,为什么time_wait。

  ✿ 对于socket编程,accept方法是干什么的,在三次握手中属于第几次,可以猜一下,为什么这么觉得。

  ✿ tcp怎么保证有序传输的,讲下tcp的快速重传和拥塞机制,知不知道time_wait状态,这个状态出现在啥地方,有什么用?

  ✿ 知道udp是不可靠的传输,如果你来设计一个基于udp差不多可靠的算法,怎么设计?

  ✿ http与https有啥区别?说下https解决了什么样的问题,如何来解决的?说下https的握手过程。

  ✿ 基于socket网络编程和tcp/ip协议栈,讲讲从客户端send()开始,到服务端recv()结束的过程,越细越好

  ✿ 进程和线程-分别的概念 区别 适合使用的范围 它们分别的通讯方式 不同通讯方式的区别优缺点

  ✿ 共享内存的使用实现原理(必考必问,然后共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?)

  ✿ c++进程内存空间分布(注意各部分的内存地址谁高谁低,注意栈从高道低分配,堆从低到高分配)

  ✿ ELF是什么?其大小与程序中全局变量的是否初始化有啥关系(注意.bss段)

  ✿ 多线程和多进程的区别(重点 面试官最最关心的一个问题,必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)

  ✿ 说出你所知道的各类linux系统的各类同步机制(重点),什么是死锁?如何避免死锁(每个技术面试官必问)

  ✿ 补充一个坑爹坑爹坑爹坑爹的问题:系统如何将一个信号通知到进程?(这一题哥没有答出来)

  ✿ netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的概率较小 ^_^ ,这四个命令的熟练掌握程度基本上能体现面试者实际开发和调试程序的经验)

  ✿ cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握

  ✿ redis有没有用过,常用的数据结构和在业务中使用的场景,redis的hash怎么实现的

  ✿ redis单线程结构有什么优势?有什么样的问题? 主要优势单线程,避免线程切换产生静态消耗,缺点是容易阻塞,虽然redis使用io复用epoll和输入缓冲区把命令按照队列先进先出输入等等

  ✿ 你觉得针对redis这些缺点那些命令在redis上不可使用? 比如keys、hgetall等等这些命令 建议用scan等等 这方面阐述

  ✿ 你觉得为什么项目中没有用mysql而用了es,redis在这里到底起到了啥作业?因为架构上这里理解不清楚,最后回答自己都觉得有漏洞了

  ✿ 你觉得redis什么算有用? 有用? 是说存进去了还是说命中缓存?最后把缓存命中率是什么说了一遍

  ✿ 平常redis用的多的数据结构是什么,跳表实现,怎么维护索引,当时我说是一个简单的二分,手写二分算法,并且时间复杂度是怎么计算出来的 (2的k次方等于n k等于logn)

  ✿ 索引的常见实现方式有哪些,有哪些区别?MySQL的存储引擎有哪些,有哪些区别?InnoDB使用的是什么方式实现索引,怎么实现的?说下聚簇索引和非聚簇索引的区别?

  ✿ 假设项目的性能瓶颈出现在写数据库上,该如何解决峰值时写速度慢的问题

  ✿ 假设数据库需要保存一年的数据,每天一百万条数据,一张表最多存一千万条数据,该如何设计表

  ✿ 数据库自增索引。100台服务器,每台服务器有若干个用户,用户有id,同时会有新用户加入。实现id自增,统计用户个数?不能重复,好像是这样的。

  ✿ mysql,会考sql语言,服务器数据库大规模数据怎么设计,db各种各样的性能指标

  ✿ 如何实现关键字输入提示,使用字典树,复杂度多少,有无另外的方案,答哈希,如果是中文呢,分词后建立字典树?

  ✿ hashmap的实现讲一下吧,讲的很详细了。讲一下红黑树的结构,查询性能等。

  ✿ 100w个数,怎么找到前1000个最大的,堆排序,怎么构造,怎么调整,时间复杂度。

  ✿ 一个矩阵,从左上角到右下角,每个位置有一个权值。可以上下左右走,到达右下角的路径权值最小怎么走。

  ✿ 四辆小车,每辆车加满油可以走一公里,问怎么能让一辆小车走最远。说了好几种方案,面试官引导我优化了一下,但是还是不满意,最后他说跳过。

  ✿ 让你实现一个哈希表,怎么做(当时按照Redis中哈希表的实现原理回答)

  ✿ 对于单例模式,有什么使用场景了,讲了全局id生成器,他问我分布式id生成器怎么实现,说了zk,问我zk了解原理不,讲了zab,然后就没问啦。

  ✿ 看你项目里面用了etcd,讲解下etcd干什么用的,怎么保证高可用和一致性?

  ✿ 既然你提到了raft算法,讲下raft算法的基本流程?raft算法里面假如慢慢的出现脑裂如何正确地处理?有没有了解过paxos和zookeeper的zab算法,他们之前有啥区别?

  ✿ 朋友之间的点对点关系用图维护,怎么判断两人是否是朋友,并查集,时间复杂度,过程。

  ✿ 回到网络,刚才你说到直播场景,知道直播的架构怎么设计么,要点是什么,说了几个不太对,他说要避免广播风暴,答不会。

  ✿ 针对自己最熟悉的项目,画出项目的架构图,主要的数据表结构,项目中使用到的技术点,项目的总峰值qps,时延,以及有没有分析过时延出现的耗时分别出现在啥地方,项目有啥改进的地方没有?

  答:1 起一个go程大概只需要4kb的内存,起一个Java线MB的内存;go程的调度在用户态非常轻量,Java线程的切换成本比较高。接着问为啥成本比较高?因为Java线程的调度需要在用户态和内核态切换所以成本高?为啥在用户态和内核态之间切换调度成本比较高?简单说了下内核态和用户态的定义。接着问,还是没有明白为啥成本高?心里瞬间崩溃,没完没了了呀,OS这块依旧是痛呀,支支吾吾半天放弃了。

  可能是由于平时定位业务问题的思维定势,加之处于蒙蔽状态,随口就是:先查看监控面板看有无突发流量异常,接着查看业务日志是否有异常,针对CPU100%那个时间段,取一个典型业务流程的日志查看。最后才提到使用top命令来监控看是哪个进程占用到100%。果然阵脚大乱,张口就来,捂脸。。。 本来正确的思路应该是先用top定位出问题的进程,再用top定位到出问题的线程,再打印线程堆栈查看运作情况,这个流程换平时肯定能答出来,但是,但是没有但是。还是得好好总结。

  ✿ 最后问了一个系统模块设计题目(朋友圈的设计),白板上面画出系统的架构图,主要的表结构和讲解主要的业务流程,若用户变多流量变大,架构将怎么扩展,怎么样做出应对? 这个答的也有点乱,直接上来自顾自的用了一个通用的架构,感觉毫无亮点。后面反思应该先定位业务的特点,这个业务明显是读多写少,然后和面试官沟通一期刚开始的方案的用户量,性能要求,单机目标qps是什么等等?在明确系统的特点和约束之后再来设计,而不是一开始就是用典型互联网的那种通用架构自顾自己搞自己的方案。

  ✿ .在高并发的生产环境中(非调试场景下),假如慢慢的出现数据包的丢失,如何定位问题

  ✿ 补充一个最最重要,最最坑爹,最最有难度的一个题目:一个每秒百万级访问量的互联网服务器,每个访问都有数据计算和I/O操作,如果让你设计,你怎么设计?

  ✿ 一定要有拿的出手的项目经验,而且要能够讲清楚,讲清楚项目中取舍,设计模型和数据表

  ✿ 系统模块设计,思路,思路,思路,一定要思路清晰,一定要总结下系统设计的流程

  特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

  医生称“向佐手势尽量别做”,向佐冲进评论区质问:请问我这个手势有什么害人之处呢

  上万名朝鲜特种兵将援俄作战?韩专家:单兵战力为普通士兵两倍,能操作各类重武器

  金伯铭找到了!34年前去世,在杭州叶落归根,子女在国外看到快报报道很高兴

  新消费日报 中信资本宣布加码麦当劳中国;苹果iPhone 16全系官方首次降价……

  《永恒之链》TGS试玩:一匹黑马/

  主站 商城 论坛 自运营 登录 注册 《永恒之链》TGS试玩:一匹黑马 子鲤 2024-10-21 返回专栏首页...