find a jb
问题
数据结构
- 跳表的实现
计算机网络
数据库
redis
kafka
杂
965名单
虾皮shopee
狼百合
笔试 2020.07.21:
- 忘了是三道题还是四道题。题都是原创,medium难度吧。一道A了80%,一道A了70%。
一面 2020.07.27:
- 介绍项目,围绕项目,介绍了线程池+Reactor模式+epoll(边缘触发 )。
- 服务器能接受多少qps。
- 如何解决粘包。
- UDP和TCP区别。
- 三次握手和四次挥手。
- 实现项目中遇到过什么印象深刻的问题。(介绍了一下服务器状态大量出现Time-wait以及如何解决)
- 实现strcmp( )。(一开始实现了strcpy( ), 后来面试官看了提醒我题目看错了,不过两个都写出来了。)
- Nignix的多进程和服务器项目的多线程对比,说说看法。(没用过nignix, 倒是在学习docker时,大概了解过一下)
二面 2020.07.31:
- 消息队列。(不会,问了是不是Redis里面的Subscribe
和publish,其实应该问的是Kafka,后来介绍又问了一遍,回答了只知道用来削峰填谷) - B树和B+树区别,着重介绍一下B+树。(这个回答得很详细)
- Innodb和Islam的区别。
- Mysql的主从复制具体实现。
- Redis的主从复制具体实现。
- C++新标准。(只说了sharepointer weekpointer这些)。
- 堆和栈的区别。
- 探讨了数据库的一致性,redis和mysql的一致性保证。
- 服务器大并发会出现什么问题。(回答了time-wait状态以及解决方法)
- 介绍了一下每一个部门,问我有啥想法。
21秋招后端-技术一面无手撕
作者:AmazingM
链接:
来源:牛客网
一面技术无手撕()
- 简历部分
- 研究方向、最近的项目的技术难点、如何解决难点、性能问题
- 项目的创新点,不同于前人的地方,如何实现
- 之前没有去实习吗?
- 你现在北京,去深圳工作有问题吗?
- 数据结构
- 主要用什么语言?
- 链表和数组的区别?
- 判断k是否在链表和数组的问题,时间复杂度相同吗?
- 你说的有序的数组怎么实现的logn?
- 那链表能实现logn吗?
- python中字典数据结构的底层实现
- 那发生hash冲突时候的解决方法
- 如果极端情况,链式地址法导致了hash退化为链表怎么解决
- 数据库
- mysql索引的数据结构
- 那么b+树和hash表的区别是什么?应用场景可以替换吗?
- b+树和普通平衡二叉树的区别
- 事务有什么特点,用银行转账的例子解释一下acid
- 事务的隔离级别
- 每个级别存在什么问题,分别什么意思
- 网络
- TCP和UDP区别
- TCP的可靠性在哪
- TCP的拥塞控制
- 操作系统
- 段页式内存管理
- 进程线程协程区别
- 你在项目中怎么使用协程的
- 死锁(概念,条件、预防、避免(银行家算法))
- 分布式
- 因为不怎么了解,就没有继续问了
- 问我有什么问题
问了一下技术栈和工作内容
二面主要项目无手撕(https://www.nowcoder.com/discuss/469939?source_id=profile_create_nctrack&channel=-1)
- 自我介绍
- 你觉得这些哪个项目是你做的最好的,介绍一下?
- 你负责哪部分?
- 遇到了什么主要问题,怎么解决的?
- 你说的根据曲线拟合排除噪声点具体是怎么做的?
- 整个视频的背景图片你是怎么提取出来的?
- 程序完整处理这样一段视频大概需要多久?
- 整个项目下来有什么收获?
- 遇到问题的时候怎么解决的?举个例子
- 深度学习的方法和传统的方法差别在哪?
- 你搭的这个游戏信息网站介绍一下
- 用户的这个请求是实时的吗?
- 官方对你这里的api的调用会有限制吗?
- 网站的qps怎么样?
- 有什么提升的方法吗?
- 增加这些缓存机制的话,第一次访问的时候有用吗?
- 缓存的话,这个内存的容量够吗,大概计算一下?
- 你觉得这样做的话,qps能提升多少?
- 你网站里的多线程是怎么做的?官方的api在这种每秒50次的请求下有限制吗?
- 那如果访问量继续增加,怎么突破这个官方的限制呢?
- 我看你这个网站是ip访问的,没有用域名吗?
- 为什么会做这样的一个网站?
- 别的语言有学习吗?
- 你觉得C、java和python有什么区别,你为什么选择了python
- 你还做过其他在线的网站吗?
- 你刚才说的redis,他能承载这么大的并发量吗?
- 你说的负载均衡具体是怎么实现的?
- 如果不考虑哪些经济问题,你现在的网站要面对一个特别大的访问量,整个框架你要怎么设计?
- 你提到的消息队列有什么好处?
- 按照你刚才说的就能提升整体qps了吗?
- 怎么看性能瓶颈在哪?你觉得瓶颈应该是在哪?为什么?
- 你以后的职业规划是什么样的?
- 按照这个目标的话,你三到五年内会怎么做?
- 那你会选择怎么样的公司呢?对公司有什么要求?
- 假如你现在面临了这样一个项目,要达到10W的qps,你现在还不会,会怎么样学习?
- Linux我看你也了解,能简单说一下吗?
- 一个正在运行的网站服务器,你怎么看哪里的性能出了问题?
- 有什么问题要问我的吗?
- 我介绍一下我们公司这边的情况
Shopee 春招后端面经【已offer】
作者:sand_zhj
链接:https://www.nowcoder.com/discuss/631576
来源:牛客网
笔试:3.10
选择+3道编程,选择题考察范围比较广,编程基本是leetcode中等难度的题,acm模式。
一面:3.14
基础面,1小时。面试官很nice,引导着问,总的来说问的很基础但很广泛,感觉这才是校招啊。后面他说他也是第一次当校招面试官。
- Linux中的虚拟内存和物理内存
- 32位Linux系统内核虚拟地址空间范围(3GB-4GB here)
- 进程和线程
- 协程(用户态上的轻量级线程 here)
- 进程间通信方式
- 匿名管道使用限制
- 共享内存怎么实现的
- 指针的长度
- epoll和select(IO多路复用的方式 here & here)
- 精度缺失(BigDecimal或浮点数存储表示规范?)
- OSI七层模型或四层五层模型说说
- TCP、UDP在哪一层,区别
- TCP保证可靠的方式
- TCP三次握手,TCP拥塞控制
- 常用的、学过的协议
- HTTPS详细过程,主要是TLS会话建立的过程
- HTTP2
- 新的电脑插上网线获得IP的过程(DHCP服务器相关?)
- MySQL的引擎你知道哪些
- MySQL隔离级别
- 脏读、幻读,MySQL是怎么解决幻读的
- recode lock、gap lock、next-key lock
- MVCC(理解不深入,here)
- redo undo
- 聚簇索引、覆盖索引、最左前缀原则
- 乐观锁,让你实现你会怎么实现
- redis 的基本数据类型
- sorted set 底层怎么实现的
- 稳定的排序算法
- 快排的思路,最优最差复杂度,怎么优化
- 二叉搜索树的定义
- 算法:找出两个单向链表的公共节点(本地IDE写,在leetcode上做过几遍了,秒)
- 简单说说项目
反问
- 公司主要用的go和python吗:正在向go转,公司这边对技术点没有固定的要求,如果有好的技术可以引进。
根据这场面试对我的评价:基础比较扎实。
二面:3.20
45分钟,好多分布式和集群的相关问题,我好难啊,估计没了。。。
没有录音,只记住下面这些。
- MySQL中的原子性和持久性是如何实现的
- MySQL主从同步机制(当时没想起来,也没用过MySQL集群,就扯到Redis集群去了)
- Redis集群主从同步机制
- Redis持久化方式
- RSD和AOF的优缺点
- HTTPS交换密钥的详细过程
- 简单聊了下项目,没亮点,面试官不感兴趣
- 算法:螺旋矩阵(也做过几遍了,去年秋招面百度还挂过这道题……)
- 分布式了解吗?
- 设计题:设计一个直播带货平台需要考虑哪些点(购物平台等不用考虑)
反问:
- 怎么学分布式:对于应届生来说先熟悉理论,然后能够完全搞懂一个秒杀系统就可以了(当天晚上阿里的redis训练营就要讲秒杀系统了,要是提前一天还能和面试官聊聊😥)。
- 公司的技术栈:面试官说了好多好久的感觉,也没怎么记住……
hr面:3.24
本来二面感觉回答的都不怎么好,竟然给了hr面,真是三月的惊喜啊!
只是简单确认下基本信息、有没有实习过(基本没有)、工作地点有没有要求、有没有意向的公司、手里的offer及还在走流程的公司(1个offer,好几家在走流程)、对公司的要求(以人为本,尊重技术哈哈)
OC、Offer:4.2
昨天下午打来oc,介绍了下薪资和福利,加了hr微信。
Shopee2021春招 后端开发工程师
笔试 2021.03.10
用的是虾皮自己的考试系统,并发太高,卡得进不去。
4点开始的,进不去,去便利店吃了点零食再回来还是不行。后来5点才进去,考试过程还加时到7点。
选择题一般般,算法题AC 2.2/3(0.2乱写碰运气碰上的),第二天收到面试邀约。
一面 2021.03.14(50min)
一开始麦克风竟然没声音,后面网络又断了,搞了十分钟才正式开始,淦
- 自我介绍
- Java内存模型JMM是否了解
- volatile修饰一个变量会发生什么
- synchronized了解吗
- 事务的几个特性
- 事务的隔离级别,怎么实现多版本的?
- 索引了解吗?聚集索引和非聚集索引简单说下
- TiDB数据是怎么组织的?
- 网络有接触过吗?TCP和UDP的区别
- 浏览器输入一个URL,发生了一个怎么样的流程?
- HTTP协议怎么解决拆包粘包的问题?
- TCP拥塞控制,怎么做的?
- 实习的时候有没有遇到丢包的问题?服务有没有遇到网络相关的问题?(没有,只发生过宕机)
- 用过ES是吧?简单说一下数据读写流程。需要传哪些东西?
- ES集群,怎么确定数据存到哪个机器上的?(没看过,说Redis)
- Redis的架构是怎么样的,怎么保证高可用?
- 介绍一下二叉树,是怎样的数据结构?聊二叉搜索树、平衡二叉树、红黑树(大概说一下它们的特点)
- 操作系统有了解吗?你们看日志是有部署日志系统吗?进程和线程的区别说一下。
- 简单说一下一致性哈希算法,在扩容和缩容、宕机情况下有什么优点?
- 撕代码。打印二叉树每一层,最右边节点的值。(写了10min。一开始写错了,淦)
反问环节
反问了表现如何,还可以,面试官说了一下学习方法。期待二面。
二面 2021.03.20(40min)
还是用虾皮自研的面试系统,很卡,不知道是哪边的网络问题
- Redis zset的数据结构,跳跃表?
- MySQL主从同步有哪些策略?insert到master是等同步完成再响应还是?
- http 2.0和1.1的区别
- 你们TiDB一个表的数据量多大?为什么不用MySQL?有没有遇到什么问题?用的是什么版本?
- 你们怎么定义慢查询SQL?调慢SQL有什么经验?有没有SQL写法有问题?
- 四次挥手TIME_WAIT存在的意义是什么?
- 你们订单中台有多少人?是不是对原来的系统进行重构?订单中台有哪些领域?你负责的是?
- 幂等性怎么确保的?
- 创建订单的时候存到Redis的是什么?有没有解决过缓存穿透的问题?
- TiDB有没有用到乐观锁?
- 你平时在学校怎么规划学习时间和业余时间?
- 你看过哪些印象比较深刻的文章或者书籍?(说了雪花算法)那你讲讲雪花算法。
- 实习当中遇到一些任务超出你能力范围怎么解决?这个问题很难会不会说要他们给你换一个任务?你设计出一个方案是怎么表达出来的,口头还是文档?会不会遇到导师的想法和你的想法不一样,怎么解决?举个例子,举个你被说服的例子也可以。
- 你觉得你自己比其他同学有优势的地方?怎么积累的?
- 有一个新的系统或中间件用到的语言和你用的不一样,你会怎么处理?
- 公司项目有点赶,周末需要加班,但是你约了同学怎么办?
- 未来职业规划是怎么样的?
反问环节(聊完才35min,后面再加问一些问题)
- 百果园也是在南山吗?
- 你们线上出问题怎么解决定位的?
- 假如你开发出来的质量太差,测试吐槽你,跟你导师说,怎么办?
一上来三个问题都不会,我人都傻了,聊到后面都没怎么问技术了......没有撕代码环节,反问了解到了虾皮用的是go语言,不太好意思问我的表现情况了,期待hr面吧。
hr面 2021.03.24(11min)
比较常规的问题。面完过两天查进度变成“不匹配”了,连感谢信都没有...
我猜问题可能是:二面表现不太好、hr面期望薪资说太高了?
Shopee 新加坡 Backend server 面经
之前在领英上HR联系了我新加坡的岗位, 参加了Shopee的笔试。
HR面
问了一些行政上的问题:
- 家在哪?
- 家人是否支持你来新加坡?
- 你觉得来了新加坡该如何适应?
- 你在留学时做了什么事情来适应新环境?
因为是新加坡的小姐姐面的,所以全程英文。
接下来就是约了一天他们virtual career fair date 的面试, 一天时间走完流程,一周出结果
技术一面(90min)
- 一上来,自我介绍都不用,直接让我介绍一个我自己的项目,后面会根据这个项目让你做类似于系统设计的东西
- 设计一个网站用户登陆的系统,详细讲一下表单如何设计。什么数据库?以什么为主键 UUID? 自增ID? snowflake? 密码如何储存? 如果又是商家 又是买家怎么办? 你提到了Salt 加盐算法 那你讲一下加盐算法
- 之后给你补充几个表单Order,User ,假设数据库和对象已经实现了映射包装,你根据表单的内容使用函数实现一些查询功能
- 接着会让你进行优化,尽量减少你数据库层面的数据访问。(尽量做一次读取到内存里)
- 看了设计的差不多了,就开始问一些设计时候遇到的数据库和网络问题
- 热点数据怎么处理 ? 缓存?
- HTTPS的加密说一下?
- HTTP的响应报文结构?
- 如何实现下次登录时, 网站依然能记得你已经登陆了? cookie + session
- cookie存成明文么? 我不太确定 回答可能要加密 wen:session存在哪里?
- 如何提高我们的网站响应速度? 大概扯了一些CDN 和 缓存之类的。
- SQL注入了解么? 怎么预防?
- CSRF了解么 如何预防 (token ,验证码....)不过当时没答出来
主管面(120min)
一轮面试如果过了,五分钟就通知你结果了。。。 然后给你发下一场的链接和时间。。。
很温柔的男主管,很年轻,甚至有点吃惊已经是主管了
-
秒杀项目夺命询问:为什么要用redis 做缓存? redis 为什么快
-
说一下你订单扣减的逻辑
-
消息队列为什么可以做订单超时处理 (这里跟他说了大概20分钟,感觉他是要完全理解才行。)
-
你这系统能实现多少的访问量 ans: 读请求10w级别
-
你MQ挂掉了你的系统不就崩了? 我回答对,但是用了sentinel 熔断机制
-
来讲下你的整个项目的业务逻辑。。。
-
你怎么保持数据库和 redis的一致性?
-
我看你写了一个数据库管理系统:
-
说一下什么是2PL
-
你是怎么实现数据库锁的?
-
为什么有表锁你还要实现行锁
-
为什么要用意向锁
-
算法:先写一颗二叉树;
用left 指针实现一个链表,使得顺序是二叉树的中序遍历,要求inplace...
(当时在北美面的, 已经凌晨2:30 了,脑死亡了快)
想了十分钟,没思路,给了提示,写了一半发现又傻掉了。 于是要求换个题
面试官说你可以用not inplace 来写。。。
写完之后,开始聊天 -
家里人支持来新加坡么
-
你在学习生活中最讨厌的事情是什么
-
你有什么要问我的么?
-
问了几个技术栈的问题, 结束了面试。
后续
虾皮还是很注重综合素质的, 网络考的频率也更高一点,可以多用心准备。
虾皮/Shopee 后端 深圳 春招(已OC)
3.10 笔试,平台卡崩数次,发邮件说可以参加3.17笔试
3.14 一面 1h
- 排列组合五人一排AB在头尾的概率是多少
- 给一个入栈队列一个出栈队列,求栈最大长度
- 如何推测全世界的猪的数量,开放讨论
- 排序算法那些是稳定的
- 给个算法算复杂度
- TCP三次握手谁先发送fin请求
- Mysql事务概念,什么时候会回滚?事务进行中途挂掉会怎么样
- 常用的HTTP状态码,patch用来干什么的?
算法:最大数(https://leetcode-cn.com/problems/largest-number/)
3.20 二面 1h
- redis用来干嘛,有些哪些数据结构,zset底层实现有哪些
- go channel 实现、用途
- 数组与slice的区别
- mysql、mongoDB、redis区别
- mongoDB索引、objectID原理,用的哪个版本?
- Mysql的事务,怎么实现
- go 垃圾回收,有什么优化
- 多路复用了解吗
- 线程协程区别,gorouting调度方法
- 算法:相交链表(https://leetcode-cn.com/problems/intersection-of-two-linked-lists/)(多解法
- 最近在学什么,看什么技术书籍
3.24 HR面 10分钟
确认信息,项目经历,团队合作,学习成绩,实习情况,offer情况,了解虾皮吗,反问
4.2 收到OC!
有没有一样已oc的老哥,可以私戳交流交流~
4月2号 shopee后台开发面经
作者:caohaoyangcn
链接:https://www.nowcoder.com/discuss/630981?type=2&order=0&pos=27&page=1&channel=-1&source_id=discuss_tag_nctrack
来源:牛客网
- 浏览器中访问shopee主页要经过哪些流程(DNS、TCP三次握手、HTTP传输、浏览器解析
- HTTP1.0和1.1区别
- 介绍一下HTTPS(HTTP + TLS、初始化协商加密过程)
- 数据库几种引擎介绍(Inno DB、MyISAM)
- 数据库中怎样运用悲观锁、乐观锁
- IO多路复用的几种实现(select、poll、epoll)用到了哪些数据结构(set、红黑树)
- 了解红黑树和AVL树吗(介绍了一下平衡二叉树的概念以及大概的思想,具体实现不了解)
- B树和B+树的区别,叶子节点有什么特点
- 介绍一下内核态和用户态
- 一个进程可能有哪些状态(就绪、运行、阻塞、终止)
- java里创建线程有哪几种方式(继承thread、实现callable、实现runnable)
- 问实习内容:具体业务;用什么数据库;是否了解生产中数据库怎样部署的;是否做过压测
- 是否了解Spring Cloud、微服务(不了解)
- 算法:两个单链表求第一个公共节点 时间O(N)空间O(1) (leetcode 160)
p.s. 有朋友问到了一面考啥算法题,我把回复复制过来:
给定一个包含k个升序无穷流迭代器的数组iterators和start,end两个整数,要求返回一个数组,其中包含按升序排第start位到第end位的所有数(建一个大小为k的小堆,从每个序列取首个元素用来初始化堆,每次poll要注意这个数当初取自哪个迭代器,然后再从那个迭代器取,放进堆里)
求一个hr面+offer call
shopee虾皮后台一二面+hr面 许愿offer
作者:取个什么名字好捏
链接:https://www.nowcoder.com/discuss/628048
来源:牛客网
第一批笔试的时候系统崩了没收到面试通知,然后第二次笔试算法ak顺利收到面试邀请。
一二面都跟面试官聊的挺开心的,发个面经攒人品,许愿offer!!
2021/03/21一面 约42min
- 自我介绍
- 双栈实现队列
- 用0,1,2,3,4,5组成一个四位数,要求每一位都不一样,请问能组成多少个四位数
- 知道哪一些缓存淘汰策略?链表实现的LRU缓存,查询一个元素的时间复杂度是多少?新插入、淘汰一个元素的时间复杂度呢?
- 数据库的事务隔离级别
- mysql默认的隔离级别
- RR能解决幻读嘛?怎么解决幻读?幻读的原理
- 删除一张表的数据有哪几种方式?从安全的角度,会采用哪一种
- 知道数据库有哪几种日志嘛
- Mysql数据同步有哪几种方式(主从DB之间) ? 半同步、异步复制、同步复制
- 数据库索引的数据结构(innodb)
- 聚簇索引底层的数据结构
- 为什么选择B+树
- 进程间的通信方式有哪些
- 实现tcp连接,在客户端和服务端需要实现哪些函数
- java实现多线程有哪几种实现方式
- 有thread方式了,为什么还要有接口类的实现方式
- runnable和callable有什么区别
- 软引用和弱引用的区别
- tcp拥塞算法有哪些
- get和post有什么区别
- http有哪些状态码?2开头是啥意思
- volatile有什么特点,为什么要有volatile
- 什么是死锁?如何避免
- 主动发起关闭的一方是time_wait还是close_wait?为什么要有time_wait
- 服务端每隔2、3小时不好使,后边又恢复了,怎么排查
- 用什么命令看资源消耗情况(netstat)
- 缓存双写,更新时先写缓存还是数据库?先写数据库的理由是什么?缓存是更新还是删除?
- 参数很多,用什么设计模式来实现?建造者模式
总结:面试官很可爱,加分加分加分
2021/03/27 二面 约30min
- 自我介绍
- 介绍实习项目,处理了什么问题,描述具体项目功能
- mysql 和 es区别,什么情况下用 ? 我聊到了底层实现
- 介绍trie树
- 为什么mysql不使用trie树呢
- 怎么对刚使用Mysql的同学提一些建议
- linux你常用的命令
- 你觉得哪些命令在公司中会比较经常使用
- 讲一下你了解的进程
- 进程之间的资源可以共享吗
- 进程间通信有哪些
- 网络连接有哪些状态(利用什么网络知识去定位问题)
- 你觉得你的优势相比其他同学
总结:二面主要集中在项目的实现,还有使用过的技术的一些拷问,我这边没有手撕,而且整个面试时间也比较短,感觉二面面试官应该更注重你的深度和你的思考。
2021/3/30 HR面(电话面)18min
- 自我介绍
- 在实习公司干了啥,学到了啥
- 为什么投虾皮,讲一下对虾皮的了解
- 有没有偏向的部门
- 为什么选择后台这个方向 ? 我讲到曾经在学校的工作室就是后台组
- 工作室主要做什么
- 平时怎么学习
- 会怎么选择看什么书
- 职业规划
- 手里的offer和在流程的公司
- 期望薪资
Shopee深圳校招后端一面凉经
作者:July_七月
链接:https://www.nowcoder.com/discuss/621910
来源:牛客网
3月17号笔试之后
21号下午两点面试
面试时长半小时,没有做算法题,询问面试官原因,说是做过笔试,春招校招面试就不需要了
- 开始先聊了一些项目
- 接着问了hash算法,以及哈希冲突的解决策略
- 然后是计网的东西,问了HTTP的的报文的组成,和各种状态码的含义
- 递归的含义,C++中递归的实现,如何不压栈实现递归
- 操作系统中的虚拟内存介绍,说明为什么用虚拟内存
总结:
回顾一下可以发现,面试官的专业知识相当扎实,
对于提出的问题的答案都能在书上找到对应的内容,
与网上一些帖子和博客给出的回答有些不同。
建议准备面试的时候可以多看看课本,不要只看百度的帖子。
还原shopee,后端面经
作者:MOMOJIJY
链接:https://www.nowcoder.com/discuss/383852
来源:牛客网
一面
数据结构:
- 比较数组和链表
- 什么是平衡二叉树
- 编程:实现反转链表
数据库:
- MySQL复合索引
- MySQL引擎MyISAM和InnoDB有什么区别
操作系统:
- Linux的Kill命令(-9信号的作用)
- Linux的进程间的通信
网络:
- TCP的四次挥手
- TCP四次挥手中的TIME_WAIT状态
- TCP和UDP的优缺点比较
算法:
编程:快速排序
二面
问到了笔试题的第三题:
复习笔试题有必要。
- 问了TCP3次握手的过程,为什么要3次?
- 针对TCP3次握手怎么攻击? (这个没答出来)
- SYN攻击和DDOS攻击原理
- TCP的传输过程是怎么样的?怎么确保有序? 有点生疏,但还是答出来了7788
- 悲观锁和乐观锁?在项目中有用到吗?
- 在学习的过程中有做什么有趣的东西吗?ans-我把这个问题理解为介绍项目,然后就开始介绍项目。这里答得不是很好,这种天马行空的问题,可以尽情拓展,我答的比较少。
- 为什么喜欢软件开发?
- 为什么选择shopee?
最后能够进shopee好开心,可以开始做毕设了。
shopee 一面+二面+Hr面
作者:呼叫土豆我是地瓜
链接:https://www.nowcoder.com/discuss/537799
来源:牛客网
shopee 一面 9.21
- 自我介绍
- 项目
- 能不能两次握手
- 锁相关的
- 单例
- 写一个sql
- JVM的结构
- 数据库的索引
- HTTPs,大概说一下就可以了
- 单例模式
- 算法:判断是不是平衡二叉树
shopee 二面 9.25
(感觉整个秋招面的最好的一次!100分的话 可以给自己打99分 )
首先自我介绍,为什么投递ios?
- 知道LRU吗?说一下它的原理,用在哪里(我有点混乱了)
- LRU的复杂度是多少
- HTTPs是怎么保证的,放了哪些信息,问的比较细,问了一连串相关问题
- 知道设计模式吗,说一下你用的设计模式,工厂模式一般用在哪里
- 知道设计原则吗
- 进程线程是什么?进程切换说一下
- 进程切换具体哪些资源?说具体一点
- 线程的上下文切换呢?
- 进程状态,线程状态的切换
- 知道DNS劫持么? 怎么去解决
- 平时怎么学习的?
- 学习一门语言,一门知识怎么学?
- 本科和研究生成绩怎么样(很好,嘻嘻 )
- 怎么自学的?
- 未来三年的规划是什么?
- 是不是书呆子,只会敲代码?平时空闲了会去干嘛
- 如果要学习ios,网站上很多杂乱的信息,怎么去分辨,规划是什么
- 项目里面遇到难题怎么解决的?方法是什么
- 如果都解决不了,想了很多天了还是解决不了,怎么办
最后面试官小姐姐 还跟我挥手说拜拜 哈哈哈 第一次有面试官挥手拜拜 hhh 很棒的一次面试体验!!
shopee HR面 10.13
HR声音很好听,但是那边声音有点听不清,像是躲在被窝里打电话的那种哈哈哈,告诉我面试大约时间是20分钟左右
- 对前两面的面试和面试官的看法,体验怎么样?(我说时间过的有点久,想回忆一下,HR小姐姐立马笑了 哈哈哈 确实蛮久了,但我面的不多,所以每个公司每个面试官,印象都还是挺深刻的)
- 聊了我本科专业和硕士的专业,当时怎么想的,问了很多,为什么选择本科那个专业,为什么跨考计算机,当时跨考的初衷(问的很细),最后还夸了我 嘻嘻嘻 。别再夸我啦,再夸就请你吃饭!!
- 问了实验室的经历,课外的项目经历
- 选择公司看重什么,氛围薪资地点?(大概是这意思吧,我有点没听清)
- 为什么选择ios客户端呢?为什么投简历很晚呢?
- 如果入门客户端,你觉得你有什么优势和劣势呢?(优势说了,劣势硬是不知道说什么哈哈哈哈 最后说暂时想不到劣势是什么哈哈哈, 本来想说可能对客户端不感兴趣? 我可不敢说)
- 投递了哪些公司,还在流程中的有哪些,发的意向书还是正式offer?该公司什么时候谈薪知道不?
- 问我对shopee的印象,我说 外企 加班少,氛围好,薪资高 然后HR姐姐给我仔细介绍了shopee,说这些印象是片面的,balabala 大概意思就是 要求工作高效! 在指定的时间内做完工作任务,后面给我介绍了shopee这家公司,讲了很多很仔细
- 最后问我有没有意向的部门,我说 听说金融部门加班很严重,然后HR小姐姐也给我仔细解释了很多,超有耐心的!! 大概意思就是 每个项目收尾的时候总会有一段加班多一点的时候 很正常,然后每个人的想法感觉也是不一样的,你们网上看到的评论想法也是一家之言,并不能代表很多,可以多问问你们在shopee工作的师兄师姐,更靠谱一些
- 反问
总结下来就是! 体验超棒! 一面 二面 hr面 三面体验都不错,hr面感觉自己答的不算好,很多想法没表达出来。 每个面试官人都很不错,很亲切
19本shopee社招后台开发面经
作者:NULLLL1
链接:https://www.nowcoder.com/discuss/625233?type=2&order=0&pos=63&page=1&channel=-1&source_id=discuss_tag_nctrack
来源:牛客网
跳槽心路历程:
本科毕业不到两年,工作虽然很轻松,但感觉没成长,日渐焦虑,怕自己待下去就废了,当然也觉得自己技术水平还ok(每天都会抽时间去看书、文章、博客、源码等),因此年后回来就想跳槽,想看看更大的世界~
shopee是深圳准一线的网红厂了,听说wlb钱多,所以找了前同事内推,抽时间面了一波。当然了,第一次面试是走出舒适区的过程,面试前怕被吊打,而且本人是java技术栈的,面go岗位还是有点八字不合的感觉。
感谢牛客中海量优质面经的帮助,但社招面经还是很少,因此我也来发篇社招面经回馈一下社区。
废话不多说,下面是面经详情:
一面技术基础拷问环节,大概1h30min。
- 项目相关,业务细节就不说了,每个人不一样,但是有几个刁难你的技术问题得好好思考再回答。
- 日千万级的推送都在mq处理吗?怎么保证不丢?
- 答:沉默了一会,只能说不保证,就算推到底层,还是有可能发送不成功,那为什么我要为了千分之一甚至万分之一的丢失率去损失可用性呢?后面我扯到了rocketmq事务消息防止丢失,但其实这个场景是不适用的。
- 为什么不用kafka,用rocketmq?
- 答:心里os:还能我选的吗?公司有什么就用什么呗。然后我说kafka一般是消费binlog使用,rocketmq一般是业务场景使用,而且公司是java技术栈的,用rocketmq会有更高的操控性,做二次开发,然后面试官说了句kafka也是jvm上跑的啊,这时我们都沉默了。
- 使用预加载到redis的形式去计算发放数量,怎么跟数据库保持一致性?
- 答:还是只能说不保证,但是能保证只少发不亏损,数据库唯一索引保证写入唯一性,已经写入的会补偿数量,如果数据库报错会告警+mq补偿,业务能接受一定的不准确性等等。write through write behind等方式还是不太适用。
- 用户端的活动数据怎么保证高并发访问不挂?
- 答:用redis集群+binlog异步刷新来保证高并发,其实我们的qps没达到打垮redis集群的程度,所以还是有点尴尬。然后扯了一下京东hotkey的原理,服务端计算hotkey访问数,自动推送到客户端本地内存,来做到scale out。
下面是常规八股文环节,还是比较简单的,其实当时的项目被灵魂拷问后有点紧张,答得很一般。
- 一致性hash,虚拟节点作用,为什么一致性hash是一个环。
- https四次握手,数字签名,证书验证,非对称加密、对称加密。
- tcp四次挥手,为什么需要close-wait要发两次才能结束。
- 10g乱序文件找中位数,思路即可。你的思路算法的瓶颈在哪,是内存排序,还是读写磁盘文件?
- 写sql,深翻页优化,我写了inner join、where index>?两种方式。where index>?方式有什么缺点?inner join为什么快?
- innodb索引格式,为什么是b+树,查询次数,为什么要回表查。
- 分布式事务怎么实现?当时只说了扫表(怎么减轻扫表压力)+rocketmq事务消息实现原理+seata at实现原理。其实还可以扯下tcc、xa,不过感觉面试官已经知道这题问不倒我了,就没继续说下去。
- linux怎么管理内存?扯虚拟内存格式,malloc,缺页中断,页表,换出算法(FIFO、LRU、CLOCK)等等。
- 进程线程协程区别?从task_struct开始,线程共享虚拟内存fd等等,扯了一大堆,面试官听不下去了,说了一下协程呢?然后我说了java quasar的原理(修改字节码,使用stack数据结构保存现场恢复现场等),协程的本质就是用线程调度的用户内存task。
- 你的博客写得很平淡无奇啊。又尴尬了,我只能说喜好不一样,研究好中间件框架一个很重要的事情就是让你从哪个类开始看源码,抓住主流程,分支流程就很简单了,然后反驳了一句如果是我去看源码的话,我会很喜欢这种博客的。坚定立场,不能怂!
- 限流有哪几种方式?我扯了阿里sentinel的令牌桶、漏斗、冷启动、自适应限流(bbr、cpu load),为什么bbr公式能做到自适应限流?当时没想明白这个问题问什么,然后面试官说了可以根据结果来做调整。
- 手撕算法,中序非递归遍历二叉树。我没练过手撕算法,都是记思路的,一看到题有思路就跳过这样来刷题。结果现场有点翻车,虽然思路是对的,但是有几个小bug。希望大家还是可以练练手撕,有思路不一定能完美写出来。
反问环节,我问你们的技术栈是啥,然后他看了下我面的岗位,好像才知道我是不到两年的本科,感觉把我当成来面高级岗位的。我简历没写年龄,只写了学校毕业时间和目前公司的就职时间,其实够专业的话也能算出我的年龄,为了避免尴尬,还是把年龄写上吧。。
二面非常规面试,准备的八股文完全失效,只问了2个技术问题+1个项目描述,全程被吊打,大概1h30min。
- 我看你简历有对go语言感兴趣?对协程了解吗?我们聊聊协程实现?被面试官引入坑了。
还是扯了一堆java quasar的原理。 - stack里面保存什么?
- 答:method栈帧,pc,局部变量。
- 局部变量是什么?应该不会保存在stack里面吧?
- 答:java分配对象内存是在堆里面的,你可以理解为一个指针。
- 协程怎么停顿?
- 答:抛异常造成suspend,保存现场。
- 协程为什么高效?
- 答:避免内核中线程的上下文切换、协程数据更轻量。
- 还有吗?等了一会我没思路,然后面试官自己说了其实还有一个,线程是可以随时发生上下文切换的,而协程是需要在固定位置显式切换的,所以保存上下文更轻量。
- 答:哦哦哦,对,没想到。
- 用户访问A服务,A服务需要调用B服务,但是B服务的处理耗时在不断上涨,问A服务的关键指标(cpu、io、mem等)会怎么变化?
- 听到问题后,我直接原地爆炸,头皮发麻,只能用dubbo的思维去硬扯,其实没太分析出来,可能分析出来5 6成吧,尴尬。
- 面试官继续问:你都是分析同步调用,那异步调用呢?
- 更爆炸了,当时陷入了java rpc线程的思路死循环中,异步调用不是一样吗?除非说A服务需要同时调用B C服务,可以用异步同时调用B C服务再get来达到并发调用的效果,但是指标应该是一样的?然后我扯了一句,太细了,打了句哈哈,我们线上遇到这样的问题都是直接扩容解决的。
- 面试官反问为什么扩容能解决
- 然后我说了句处理固定数量qps的请求,如果多个应用一起扛的话,每个应用能够均摊,如果B服务也能顶住的话,其实可以不被B服务影响吞吐量。
- 其实后面细想,面试官真的是在问这个吗?协程协程,抓住协程跟线程的区别,这题就迎刃而解了,为什么协程高效?因为完全异步调用时协程能够接受在调用处停顿啊,线程做不到。其实问题是承上启下的,当时没get到他的点,太可惜了。
- 项目相关,挑了一个来讲,比较细,面试官一开始没理解我的讲解方式,让你画架构图你却在扯什么数据结构,然后我来了句点睛之笔后他就懂了,有些业务细节甚至扯到组织架构相关了(有兴趣的可以查下康威定律),然后他说也想过这种方式去做他的业务,业务匹配度高就是不一样,后面就聊得比较开心了。
- 聊天模式,你是怎么样的人,上司和同事怎么看你,你的优缺点,你的核心竞争力,你跳槽的期许,有没有面大厂等等。
- 反问环节,扯了下k8s落地相关,我说有看到他们的k8s岗位招聘,是已经落地了吗?
二面面试官问的问题有点爆炸,能看出来是个技术leader,遇到技术leader面试其实不会全部关注你目前的技术水平,也会关注你的潜力、合作度,能否融入团队等,硬实力是门槛,软实力其实更重要!所以聊天模式也要好好回答,面完下来感觉人是很nice的。
三面是平淡无奇的hr面,就不分析了。
最后总结:
1.面其他语言的岗位最好不用把大部分精力放在本语言特有的八股文上,比如常规的spring、jvm、juc八股文?虽然我都会哈哈哈。不过一些无关语言的,比如rpc、mq等,还是可以准备的。
2.社招的话项目匹配度高还是很加分的,把项目总结好,多用star法则(背景,用了什么手段,解决什么问题,达到什么效果),不要只写功能的堆叠(XX系统有什么什么功能,用了什么什么框架中间件)。
3.问题很多都是承上启下的,如果不会,可以往这边去思考下,面试官真的在刁难吗?
4.不懂的问题不要慌,要学会扯到你会的地方,表达你的技术积累,面试是自己的秀场,不是一问一答的过程。
5.八股文一定得答细致了,比如一个经典问题:mysql有哪几种日志?一般可能答个redo undolog可能就完事了,但真的有那么简单吗?完全可以继续说有中继日志慢查询日志错误日志查询日志等,然后继续扯下去(中继日志扯到主从同步,慢查询日志扯到sql调优),让面试官觉得就算你是背的也是背透了,你的知识面是能够发散的。
6.不要紧张,不要紧张,不要紧张,重要的事情说三遍,紧张真的会严重影响发挥!

浙公网安备 33010602011771号