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状况,这个状况显现正在什么地方,有什么用? ✿ http与https有啥区别?说下https处分了什么题目,奈那处分的?说下https的握手经过。 ✿ 基于socket搜集编程和tcp/ip和讲栈,讲讲从客户端send()着手,到供职端recv()了局的经过,越细越好 
✿ 共享内存的操纵实行道理(必考必问,然后共享内存段被映照进历程空间之后,存正在于历程空间的什么身分?共享内存段最大控造是多少?) ✿ c++历程内存空间分散(属意各一面的内存地点谁高谁低,属意栈从高道低分拨,堆从低到高分拨) ✿ 多线程和多历程的区别(核心 口试官最最合怀的一个题目,务必从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自增,统计用户个数?不行反复,形似是如此的。 
✿ 怎样实行合节字输入提示,操纵字典树,庞时髦多少,有没有其他计划,答哈希,倘若是中文呢,分词后创立字典树? ✿ 一个矩阵,从左上角到右下角,每个身分有一个权值。可能上下支配走,达到右下角的途径权值最幼奈何走。 ✿ 四辆幼车,每辆车加满油可能走一公里,问奈何能让一辆幼车走最远。说了好几种计划,口试官辅导我优化了一下,不过照旧不舒服,终末他说跳过。 ✿ 对待单例形式,有什么操纵场景了,讲了全部id天生器,他问我分散式id天生器奈何实行,说了zk,问我zk领会道理不,讲了zab,然后就没问啦。 ✿ 既然你提到了raft算法,讲下raft算法的基础流程?raft算法内中倘若显现脑裂奈那处罚?有没有领会过paxos和zookeeper的zab算法,他们之前有啥区别? 
✿ 回到搜集,适才你说到直播场景,懂得直播的架构奈何安排么,重点是什么,说了几个不太对,他说要避免播送风暴,答不会。 ✿ 针对自身最熟练的项目,画出项方针架构图,要紧的数据表机合,项目中操纵到的技巧点,项方针总峰值qps,时延,以及有没有明白落伍延显现的耗时永别显现正在什么地方,项目有啥改良的地方没有? 答:1 起一个go程大体只须要4kb的内存,起一个Java线MB的内存;go程的调节正在用户态至极轻量,Java线程的切换本钱对比高。接着问为啥本钱对比高?由于Java线程的调节须要正在用户态和内核态切换因而本钱高?为啥正在用户态和内核态之间切换调节本钱对比高?大略说了下内核态和用户态的界说。接着问,照旧没有清楚为啥本钱高?心坎霎时倒闭,没完没清晰呀,OS这块依然是痛呀,支支吾吾半天放弃了。 恐怕是因为闲居定位营业题方针头脑定势,加之处于蒙蔽状况,随口便是:先查看监控面板看有无突发流量特地,接着查看营业日记是否有特地,针对CPU100%阿谁时辰段,取一个模范营业流程的日记查看。终末才提到操纵top号令来监控看是哪个历程占用到100%。果真阵地大乱,张口就来,捂脸。。。 向来精确的思绪该当是先用top定位出题方针历程,再用top定位到出题方针线程,再打印线程仓库查看运转环境,这个流程换闲居相信能答出来,不过,不过没有不过。照旧得好好总结。 ✿ 终末问了一个编造安排问题(挚友圈的安排),白板上面画出编造的架构图,要紧的表机合和疏解要紧的营业流程,倘若用户变多流量变大,架构将奈何扩展,何如应对? 这个答的也有点乱,直接上来自顾自的用了一个通用的架构,觉得毫无亮点。后面反思该领先定位营业的特质,这个营业明明是读多写少,然后和口试官疏通一期刚着手的计划的用户量,机能恳求,单机标的qps是什么等等?正在鲜明编造的特质和管束之后再来安排,而不是一着手便是用模范互联网的那种通用架构自顾自身搞自身的计划。 ✿ 填补一个最最紧张,最最坑爹,最最有难度的一个问题:一个每秒百万级拜望量的互联网供职器,每个拜望都稀有据算计和I/O操作,倘若让你安排,你奈何安排? |