热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

搞什么?双非渣硕,苦刷算法三个月,拿到字节offer竟然只是涨薪6K?

背景本人19年毕业,双非硕士,软件工程专业,1年工作经验(银行外围系统,又老又久,无高并发场景

背景

本人19年毕业,双非硕士,软件工程专业,1年工作经验(银行外围系统,又老又久,无高并发场景)Java后端开发,无实习经历,通过BOSS找的字节猎头。

刚开始说是被飞书拒绝了,然后被教育捞起来了。

不絮叨了,直接看面经!

双非渣硕,开发一年,苦刷算法三个月,四面字节成功斩获offer

 


一面

时间:7月24日 1小时


ps:很基础的知识点考察,涵盖了IO,网络等基本的理论知识,数据库和多线程会结合个人的语言和使用过的软件框架做提问,一面很基础,基本都答上来


hashmap原理,底层实现,线程不安全的原因,怎么扩容,底层数组大小为什么是2^n,扩容死锁产生的过程(不会), 1.7和1.8的区别
concurrenthashmap原理,结构,为什么线程安全,分段锁怎么实现
synchronized和lock区别, volatile原理了解吗
Lock底层实现原理, AQS怎么实现的

Redis数据类型,删除策略,持久化方案,分布式方案,redis cluster方案原理(没看具体的架构内容),分布式一致hash知道吗?
IO模型:IO模型有哪些,select和epoll原理,select的缺点(搞Java,如果没有高并发场景的经历,IO这块也就不怎么了解了,基本都是复习多线程的知识去了)
OSI模型(五层和七层)

介绍下tcp和udp
tcp握手,挥手
慢启动,快速重传,快速恢复
time-wait介绍下
innodb特点
innodb索引物理结构
主键,回表,覆盖索引
与MyISAM对比

算法:三数之和,要求给出时间复杂度和空间复杂度,刚开始暴力三重循环,后来要求优化


二面

时间:7月31日 1小时


ps:结合项目经历提问,面试官会结合简历和一面结果适当补充一些基本理论知识和常用框架的提问,个人对kafka不太了解,可能面试官不太满意


项目经历:分库分表,不借助中间件怎么实现,MyCat了解过吗(不了解),分库和分表怎么选择?结合项目场景讨论划分规则
其他项目经历,反射、注解的原理,有用过线程池吗?Java线程池有哪几种?Java线程池的构造参数?什么是阻塞队列?Java有哪些阻塞队列?
https建立连接的过程是怎样的?

了解中间人攻击和跨域攻击吗?

进程与线程的区别和联系
进程的切换发生了什么
线程的切换为什么比进程的切换代价小
进程通信的方式和举例

kafka的产生背景和在项目中的使用
topic和partition,partition是干什么的
Consumer Group是干什么的
怎么将partition分配到多个broker上?怎么动态调整partition和broker的数量?
rebalance什么时候发生,rebalance过程(这个真不知道)

Linux的shell用的怎么样?grep、sed、awk有用过吗?(只会grep...)

怎么监控机器性能?

Linux文件系统了解吗?软连接和硬连接?

矩阵顺时针旋转90°和逆时针旋转90° 股票买卖(几个变种问题没做出来,但是基本的应该还行)


三面

时间:8月6日 1小时


ps:主要是系统设计,发散性问题,另外,面试官吐槽了我的简历,建议简历老老实实套模板,不要花里胡哨,程序员的简历要整洁明了


kafka如何做到高可用(不会,面试官不太满意,因为我的工作经历没有互联网高并发,而且kafka的确没怎么看)

设计热榜,动态展示top K

N个线程交替打印,怎么实现,写出来,跑一下

设计长短地址转换


四面

基本流程,问离职原因,聊人生等等


总结

整体字节跳动的面试感受,面试官很专业,要求基础知识很熟悉,面试之前一定要准备后再去面试。LeetCode题目也要刷。手写算法留的时间不多,3-10分钟,如果3分钟还没写,就要求讲出解题思路。

切记面试前一定要刷题和准备,简历上的项目不熟悉的千万不要写上去,写上去的项目备好2-3个技术方案。


分享一些面试字节跳动必刷的面试题与学习文档

算法(面过字节的朋友都知道,字节的算法是问的最多的)

推荐这份左神写的《程序员代码面试指南,IT名企算法与数据结构题目最优解》


书籍涉及算法与数据结构编程题目240道以上,并且个人实现出最优解,大部分题目为面试高频。


目录(算法分为将、校、尉、士四个等级来表示难易程度)

双非渣硕,开发一年,苦刷算法三个月,四面字节成功斩获offer

 

双非渣硕,开发一年,苦刷算法三个月,四面字节成功斩获offer

 

双非渣硕,开发一年,苦刷算法三个月,四面字节成功斩获offer

 

第1章栈和队列

设计一个有getMin功能的栈(士★)

由两个栈组成的队列(尉★★)

如何仅用递归函数和栈操作逆序一个栈(尉★★)

猫狗队列(士★)

用一个栈实现另一个栈的排序(士★)

用栈来求解汉诺塔问题(校★★★)

生成窗口最大值数组(尉★★)

构造数组的MaxTree (校★★★)

求最大子矩阵的大小(校★★★)

最大值减去最小值小于或等于num的子数组数量(校★★★)

双非渣硕,开发一年,苦刷算法三个月,四面字节成功斩获offer

 

双非渣硕,开发一年,苦刷算法三个月,四面字节成功斩获offer

 

双非渣硕,开发一年,苦刷算法三个月,四面字节成功斩获offer

 

 


最后

对于大厂面试,我最后想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与offer失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。

以上内容中所有的学习资料、面试资料,均可以免费提供,希望大家金九银十面试顺利,拿下自己心仪的offer!


推荐阅读
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 近期在研究逆向工程,因此尝试了一些CTF题目。通过合天网络安全实验室的CTF实战演练平台(http://www.hetianlab.com/CTFrace.html),我对Linux逆向工程的掌握还不够深入,因此暂时跳过了RE300题目。首先从逆向100开始,将文件后缀名修改为.apk进行初步分析。这一过程不仅帮助我熟悉了基本的逆向技巧,还加深了对Android应用结构的理解。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
  • 本文总结了《编程珠玑》第12章关于采样问题的算法描述与改进,并提供了详细的编程实践记录。参考了其他博主的总结,链接为:http://blog.csdn.net/neicole/article/details/8518602。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Win10 周年更新 14393.1737 的详细内容与改进
    尽管今天不是常规的周二补丁日,微软依然发布了 Win10 周年更新 14393.1737 和 Win10 创意者更新 15063.632。本文将详细介绍 Win10 周年更新 14393.1737 的主要更新内容。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 优化后的标题:Apache Cassandra数据写入操作详解
    本文详细解析了 Apache Cassandra 中的数据写入操作,重点介绍了 INSERT 命令的使用方法。该命令主要用于将数据插入到指定表的列中,其基本语法为 `INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...)`。通过具体的示例和应用场景,文章深入探讨了如何高效地执行数据写入操作,以提升系统的性能和可靠性。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
author-avatar
孩子气zyj2
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有