大厂面试:一个四年多经验程序员的BAT面经(字节、阿里、腾讯)

本文是一位拥有四年经验的程序员分享的在字节跳动、腾讯和阿里巴巴Lazada的面试经历。面试涵盖了Java、Spring、Struts等技术,重点考察了算法、系统设计、数据库、中间件使用和项目经验。字节跳动重视算法和场景设计,腾讯关注场景思考和软实力,阿里Lazada侧重项目架构和性能优化。面试官会针对项目中的实际问题进行深入提问,例如Redis高可用、MySQL高并发处理、MQ一致性等。此外,面试还包括对求职者的职业规划和未来技术方向的理解。
摘要由CSDN通过智能技术生成

字节面经

字节算是我面试最多的公司了,前前后后面了不下四次,实话说,字节的hr小姐姐还是很热心的,一般面完两天内就会微信通知你,咨询问题也是很热情的解答。

这几次面试中有两次我是在技术终面被刷的(吐了呀),一次到了hr面,问的知识范围也都差不多,全部写出来没必要,给大家分享内容有些代表性的面经吧,这是我投递字节国际化电商部门后端岗位的面试题目
面试题

自我介绍

Redis你比较熟吧,说说它机制为什么快

有几种数据结构,底层分别是怎么存储的

Redis有几种持久化方式

多线程情况下如何保证线程安全?

用过volatile吗?它是如何保证可见性的,原理是什么

MySQL的索引结构,聚簇索引和非聚簇索引的区别

MySQL有几种高可用方案,你们用的是哪一种

说说你做过最有挑战性的项目

你具体负责哪部分的东西,哪些最有挑战性,说说你做了哪些优化

秒杀采用什么方案,分表怎么做的,redis挂了怎么办,

分表为什么要停服这种操作,如果不停服可以怎么做

你怎么防止优惠券有人重复刷?

redis数据幂等性是怎么保证的(类似于分布式锁那种,有个key就行了)

设计题:

1、如果让你设计mysql高可用方案的话,你会优先考虑哪些方面

2、抖音评论系统怎么设计,如果加入好友关系呢?(考虑到数据读取的性能,可以采用写扩散的方式)

3、怎么设计一个短链地址,要考虑跨机房部署问题

你说要哈希算法生成短链,会存在什么问题(哈希冲突),该怎么解决?(可以用布隆过滤器,但是不好控制,而且仍存在hash冲突)

有没有更好的方案?(自增序列算法,每次接收一个长链,就分配一个ID,转成62进制再拼到短域后面)

存在的问题?(自增id方案如果用雪花算法,可能存在机器时钟回拨的问题,导致id重复,说到这里,我终于明白那家伙为什么说要考虑跨机房部署问题)

该怎么解决?(用Redis做自增id生成器,性能高,但要考虑持久性的问题;或者改造雪花算法,通过改造workId解决时钟回拨的问题)

算法题:

1、有一个数组,里面元素非重复,先升序再降序,找出里面最大的值(二分法,要考虑只有一个元素和两个元素的边界情况)

2、链表深拷贝

3、统计用户在线最大峰值和人数,要精确到秒(额滴神啊,秒级这个谁受得了,我的思路只能精确到小时,面试官说没问题,后面成功写出来跑过测试用例)

软实力:

1、你怎么评价你自己

2、你怎么看电商这块领域,为什么要选择电商

3、有没有要问我的

总结:很看重算法和场景设计,而且可能是因为投递电商部门,对我之前做过的电商项目考察非常细
腾讯面经

我面试腾讯有两次,两次都是二面挂掉的,除了第二次的二面(有道很刁钻的场景题,有空我会单独写篇文章分享),其他面试的问题都不算难,实话实说我自认为答得还不错,第二面就被刷我也是有点纳闷&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值