社招6轮⾯试(已拿Offer)
第⼀轮⾯试
这轮⾯试总体是问基础知识,保证⾯试者基础过关
1. 公钥和私钥区别是什么,可以把公钥当做私钥,私钥当做公钥使⽤么?
2. 加密算法都有哪些?
3. base64 是加密算法么?
4. 解释下什么是惊效应?
5. 访问域名之后会经过哪些步骤,寻⼦⽹的协议叫做什么,到进程除了端⼝号还需要什么?
6. 在没有设置主键的情况下,设置了唯⼀索引会将其作为主键构建索引么
7. 进程和线程的区别,chrome 每个 tab 之间是多进程还是多线程,为什么?
8. DOM 频繁修改会有什么问题,如何解决,⽤虚拟 DOM 有什么坏处
9. 限流算法都有什么,你们使⽤的算法原理是什么?
0. 50 亿个阅读量到最多的 10 个怎么
1. sku 和 spu 关系是什么,如何做属性关联的?
2. 如何查看系统的资源使⽤状态,top 中 cache 和 buffer 的含义
3. 进程间通信⽅式都有什么?
4. RSA 算法是怎么个实现原理?
5. 多个进程写⼀个⽂件如何避免冲突,如果加锁的话会导致等待时间过长有什么优化⽅案么?(说了个消息队列)
6. redis 如何解决缓存穿透问题,如果不确定 key 的情况下,存在穿透怎么办
7. 软件中断和硬件中断的区别
8. 如何理解中断?中断的实现原理
第⼆轮⾯试
笔试 1 ⼩时
1. 有 64 匹马,赛场只有 8 条赛道,请问最少需要⽐赛多少场才能确定跑得最快的那 4 匹马,不可以借助计时器给每⼀匹马⼀⼀计时;
2. ⼀个桶⾥⾯有⽩球. ⿊球各 100 个,现在按下述的规则取球:
i . 每次从桶⾥⾯拿出来两个球;
ii. 如果取出的是两个同⾊的球,就再放⼊⼀个⿊球;
iii. 如果取出的是两个异⾊的球,就再放⼊⼀个⽩球。
问:最后桶⾥⾯只剩下⼀个⿊球的概率是多少?
3. 给定字符串 str1 和 str2,将 str2 插⼊ str1 中,问有多少种插⼊⽅法使得新串是回⽂。例如:
Str1=lol Str2=o 总共有四种插⼊⽅法,分别得到olol,lool,lool,lolo,其中能到回⽂的⽅法有两种。输⼊: lol o 输出: 2
4. 两个有序(从⼩到⼤)单链表,合并为⼀个有序的单链表。
struct LinkNode{ int value; struct LinkNode *next; }; struct LinkNode *merge(struct LinkNode *firstLink, struct LinkNode *secondLink)
5. 公司有内部 bbs,员⼯都会在上⾯发帖交流。据统计,有三个员⼯ ID 发帖很多,他们各⾃的发帖量都超过帖⼦总数 N 的 1/4。如果
给到你所有帖⼦的发帖⼈ ID 列表,请写代码出这三个 ID,要求时间复杂度 O(n),空间复杂度 O(1)。
⾯试 1.5 ⼩时
其中这⾥的⾯试共有 2 位⾯试官,第⼀位⾯试官问基础知识,第⼆位⾯试官问项⽬
1. 进程和线程的区别?
2. 什么是虚拟内存?
3. 1 亿个数字中有 2 个相同,怎么?
4. 访问⼀个链接的流程
5. 访问 http 为什么会跳到 https
6. linux 常⽤指令都有什么?
7. 如何实现序列化和反序列化
8. 数据库索引的结构,有什么特点?
9. 堆和栈的关系,对象在堆中内存是连续的么?
0. 乐观锁怎么理解?
暧昧的话1. 数据库上乐观锁怎么应⽤的?
2. 负载均衡都有什么算法?
应采儿3. arp 协议是怎么理解的?
4. http 包的结构是什么样的?
5. tcp 和 udp 区别
如何打方向盘
6. tcp 怎么保证稳定传输的?
7. 限流算法怎么实现的?令牌桶具体是怎么实现的?
8. 交换分区做什么的?
第三轮⾯试
本轮⾯试主要考察⾯试者项⽬⽔平和能⼒
缺点:在某些点上更多的挖掘技术深度
第四轮⾯试
这⼀轮⾯试属于交叉⾯试,由其他部门的⾯试官来⾯试
问题:现在有⼀个任务,某个公司要通过在早上 10 点钟发红包,现在有⼀个数据库表,⾥⾯存储了所有员⼯的 openId,还有⼀个⽀付的接⼝,传⼊ 1 个 openId 之后可以进⾏红包⽀付,每次调⽤时间 1 秒钟,如何才能尽快的将该任务完成,请写出三种⽅案
⾯试官特意提醒可以不局限在题⽬本⾝上,这道题要按照真实情况去处理给出⽅案
下⾯是我当时给出的⽅案
1. 第⼀种⽅案
⽅案:多线程提⾼并发量,先从数据库获取到全部的员⼯列表信息,然后进⾏分割,⽐如按照尾号进⾏分割,同⼀尾号的由⼀个线程来去处理。
优点:开发简单,只需要启动多线程或者线程池即可,能够较⼤可能的利⽤服务器资源
缺点:
(1)⾸先员⼯的数量并不确定,把员⼯数据全部拉取出来可能存在数据量过⼤的情况。
(2)还有就是要考虑服务器性能,是否能够满⾜多线程所需的条件,⽐如说如果只有⼀个 cpu,其实并没有达到并⾏的效果
(3)如果服务器不满⾜资源的话,这样的话就要考虑多个机器去执⾏,多线程放到多个机器去执⾏还需要额外的开发⼯作量
(4)这⾥⾯没有考虑发送失败的情况,如果发送失败还需要有重新发送机制
2. 第⼆种⽅案
⽅案:多进程去提⾼并发量,启动多个应⽤,不同的应⽤去读取不同的数据,⽐如⽤尾号来区分。
汽车消费报告优点:⽅便分别部署在不同的服务器上去执⾏,能够尽可能的利⽤更多的服务器资源去解决问题,如果考虑重新发送的话也⽅便再写⼀个应⽤去部署新的服务器启动
缺点:
(1)数据库在多进程读取时,数据库表会不会被锁住,如果锁住的话性能就会降低,所以要选择合适的存储引擎。
(2)有可能需要占⽤更多的服务器资源
3. 第三种⽅案
⽅案:和⽀付部门同事协调,单个 openid 发送接⼝其实并不合理,应该提供批量发送接⼝,允许发送数组,因为⽬前最⼤的瓶颈在接⼝耗时上⾯。
优点:从根本上解决瓶颈问题,也能缓解⽀付端的压⼒,不会被临时的批量调⽤数据量压垮
虫字旁的字缺点:这个存在的问题是将开发⼯作量交给了⽀付部门,需要与其协调资源,确保能够按时完成⼯作
第五轮⾯试
安全手抄报资料本轮⾯试属于 GM ⾯试,要讲 PPT,前⾯的⾯试官让我好好准备⼀下,挑出⼀个⾃⼰认为最有价值的项⽬讲清楚
PPT 讲完之后,⾯试官还试⽤了下我做的 mdnice 等开源⼯具,⼀不⼩⼼就被发现了 bug,提出了意见
第六轮⾯试
本轮⾯试属于 HR ⾯试,会问离职原因、家庭、城市、薪资和绩效等问题
总结
1. 多久能将所有⾯试⾯完
我本⼈⾯试了半个⽉完成了所有⾯试,但是这个速度应该是⽐较快的,慢的可能会长达⼀个⽉的时间,所以建议跳槽⾯试前做好长期准备2. ⾯试完成后就发 offer 么
⾯试完成后,其实只是完成了整个流程的⼀半,距离发 offer 和⼊职还有很长的时间,通常的流程是
内推 -> 多轮⾯试 -> 邮件反馈当前薪资 -> ⼝头 offer 沟通薪资 -> 正式 offer -> 背调 -> ⼊职指引 -> 确定⼊职时间 -> 正式⼊职
所以⾯试是⼀个长期战⽃,知⼰知彼,百战不殆
3. ⼯作地点在哪⾥
我⾯试的部门在深圳,的岗位⼤部分都在⼴州
欢迎加⼊我的知识星球,⼀起探讨架构,交流源码。加⼊⽅式:备注:CSDN
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论