2022届实习+秋招大厂面试经验(后端开发+java)

个人情况:待补充
求职方向:后端开发
大致情况:20年底在字节实习到21年6月底(转正),21年7月初开始在阿里实习到8月中(转正),随后面试了百度、腾讯和美团,均拿到offer(中间有挂过,被其他部门又捞了),最终选择阿里

我是22年秋季毕业,面试时间是从20年年底开始,到21年秋季结束,下面按时间顺序介绍一下实习+秋招时的面经:
有的题目答案在括号里,大部分没有答案

一、实习面试

1. 字节

一面(12.17 过)

自我介绍

如何判断有向图有无环 拓扑排序
两个栈如何组成一个队列
一篇文章将某些词替换为**,词在list里(字典前缀树)

java优先队列的api 底层数据结构(数组)
小顶堆移除堆顶元素复杂度

tcp如何保证在传输过程中没有篡改过
首部校验和如何生成
403 502状态码含义
CSRF攻击 如何防御 校验token放在哪
https哪里用到对称加密和非对称加密

mysql分页查询 查询第5000-6000条数据 如何走索引

给定一亿个<uid, inlogTime, outlogTime> 求峰值 峰值可能有区间用数组记录


二面(12.18 过)

DNS如何工作 如果改变一个域名的ip需要多长时间生效(24-48h)

java代码给出输出 泛型类型判断 使用过其他语言的泛型吗 回答C++ 是如何实现的
hashMap和hashTable ConcurrentHashTable

实现客户端的send函数 收到100条消息或到1秒 将消息合并发送 保证多线程和性能

linux中在命令行用ctrl C发生了什么
用过java的nio吗 linux有哪些多路复用 那个性能最好 为什么

http2和http3了解吗

用户态和内核态

关系数据库和非关系型数据库区别 (事务) 什么时候用关系型和非关系型

leetcode165 比较版本号
leetcode17.24 最大子矩阵


三面(12.20 过)

介绍项目

设计选课系统: 功能 逻辑分层 api设计 存储设计 多线程(锁) 性能(缓存) 权限管理

最大子数组和

2. 阿里云

一面(6.2过)
项目 redis 热key如何处理
hive介绍一下 mapreduce介绍一下
进程和线程区别 哪些是共享的 信号量共享吗
java内存模型
currentHashMap读会脏读吗 cas有哪些实现
jvm和jre的区别
笔试:给定数组 输出一个范围,这个范围的所有int都在数组出现且范围最大


二面(6.2过)

currentHashMap和HashMap和LinkedHashMap
== equal区别
java的gc 和c++手动清理有什么优缺点 full gc的时候其他进程可以运行吗
c++的int32和int64和unit64有什么区别
虚函数 智能指针
什么场景使用多线程 使用多线程需要注意什么
互斥锁和读写锁
cs架构的同步 异步 什么时候用同步 什么时候用异步
TCP和UDP区别 分布式场景下什么时候用TCP 什么时候用UDP
RPC讲一下 有哪些实现
MR和Tez的区别
yarn和k8s区别
给定一个二叉树 每一层的节点一个next指针 指向右边 右边没有指null 赋值next指针


三面(6.3 过)

项目 清理人群包是怎么实现的 实时的打算怎么做
实验室课题
最长连续和
三个鸡蛋 b比a硬 问b比c硬的概率是多少
对称加密和非对称加密

二、秋招

1. 百度

一面(搜索架构 7.29 挂)
自我介绍
实习介绍

讲讲java gc
根可达性算法 计数算法 哪些语言用计数算法
年轻代有几个区 回收几次没有被回收会放在
java agent机制 aof
什么时候需要自定义类加载器 双亲委派

https除了有公私钥 为什么还要有签名证书
https建立连接需要几次握手

redis为什么单线程 redis瓶颈体现在哪
redis高可用性体现在哪
redis哨兵

输入网址到显示页面的过程
七层模型介绍一下

守护进程 僵尸进程 孤儿进程 协同进程

数据库有哪些锁
讲一下行锁

string转为int算法题


一面(自动驾驶 8.25 过)

自我介绍
实习介绍
字节实习

jdk jre jvm的区别
==和equals区别
final修饰类 可以被继承吗
Math.round(-1.5)是多少 即将原来的数字加上0.5后再向下取整
java基本类型 long占几个字节
ArrayList和LinkedList区别
HashMap实现
垃圾回收,如何判断一个对象是否回收

mysql的事务特性
事务的隔离级别
mysql表插入7条 删2条 再重启插入 id是多少
数据库主从同步
介绍InnoDB

redis的字符串和C字符串的区别
redis的分布式锁
redis的过期删除策略
redis两种持久化方式区别,过期键如何处理
redis主从同步 主服务器更换了一台如何同步

nginx了解吗

kafka了解吗
为什么使用消息队列
里面的zookeeper一些了解吗

[1,2,2,3,4,5,6,7,8,9] 7 求相邻元素相加和为7的子数组


二面(自动驾驶 8.27 过)

项目:redis用在哪 用的什么数据结构 用了什么命令
kafka用在哪 起到什么作用 kafka的性能有了解吗 为什么使用kafka 消息是严格有序的吗

最长回文子串

tcp和udp的区别

三次握手为什么不是四次
四次挥手为什么是四次 客户端断开为什么不能直接断开

hashmap hashtable treemap的区别
jvm的内存划分
一般情况下 有哪些io方式
介绍java的垃圾回收器

数据库查询优化方式
建索引怎么建 选哪些数据
索引是怎么存的
为什么使用b+树
mysql的事务
sql改变会实时写入磁盘吗
事务的原子性如何实现
回滚如何实现

1亿个数字找出最大的10个


三面类似hr,主要聊天
2. 腾讯

一面 (wxg小程序&公众号 8.12 挂)

公共最近父节点
一个字符串“28776”最多交换两个数字,交换后数字最大
滑动窗口的最大值 每滑动一次有一个最大值 输出最大值这个数组

String s = "ad"和 String s = new String(“ad”)
进程 线程 协程 协程切换需要保存上下文吗
select和epoll的区别
C++的stl的普通队列的实现
mysql的引擎有什么 耗时很大的sql语句如何查


一面(teg 安全开发平台 8.30 过)

进程通信方式
什么情况应该使用多进程多线程
查询cpu使用情况 除了top还有什么 find用过吗

mysql内连接和外连接区别
怎么查a表有 b表没有的数据
一条sql运行比较慢 怎么查
redis源码读过吗
本地部署一个redis 查一个key需要多长时间
redis为什么单线程1万个请求还能这么快 瓶颈不在cpu吗

快排的复杂度、思路、什么情况下效率比较高

四次挥手
close wait是哪一方的状态
粘包遇到过吗 怎么解决的 如果没有上下连着的会不会出现
长连接短链接区别 什么时候使用短连接
拥塞控制是为什么

项目kafka用几个topic 几个paitition 为什么

hash冲突如何解决 什么情况下会使用rehash


二面(teg 安全开发平台 9.1 过)

有序数组旋转过一次,找到特定元素的下标
实习项目中kafka是怎么做到消费一次且仅消费一次的
调度如何实现公平性,防止饥饿问题的出现


三面(teg 安全开发平台 9.3 过)

问项目
从两段实习中学习到什么
选择offer时看重什么

3. 美团

一面(基础架构 9.2 过)
约瑟夫环

hashmap的put操作 为什么要有树和链表两种结构
hashmap的key有什么要求 可以是自己写的类吗 (equal hashcode函数)
如何自己实现一个线程安全的hashmap synchronized可以只加put不加get吗 可以

synchronized如何实现非公平锁 阻塞了好多线程 如何选择唤醒哪个
为什么把synchronized设计成非公平锁
什么时候用公平锁 什么时候用非公平锁

线程池参数
线程池如何维护核心线程一直运行

close_wait出现在客户端还是服务端
time_wait出现在客户端还是服务端

看进程负载是用什么命令
top命令的buffer和cache有什么区别

查询a ab b,索引应该建什么


二面(基础架构 9.6 过)

linux下面查询网络相关的命令 回答netstate 能看到哪些信息
http2.0和http1.1相比有什么区别
比较高效的排序算法
快排在任何情况下都很快吗
基本有序的数组,使用哪种排序比较好:插入或增强性冒泡
和分布式有关的算法
了解一些分布式算法吗
提示:一致性hash
用过比较好用的数据结构 除了基本的数据结构
提示:布隆过滤器讲一下 会误判吗 随着数据增多 误判率会不会越来越高 解决方法
用的java版本是什么 gc回收方式
除了g1还知道其他的,性能更好的吗? ZGC
了解序列化相关的吗 答protobuf和json 哪个性能更好
阿里的实习做了什么
一个没有重复的数组,长度是n,从里面随机取出m个不重复的数:回答使用set数组,
优化1:取出a[i]后把它和最后一个元素调换位置,下次随机就从前面随机,不包括他;
优化2:把a[i]都置为第一个取出来的数x,再去读的时候判断一下是不是x,是就不要了(好像自己也看不懂了)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 大厂java后端开发规范包括以下几个方面: 1. 代码规范:大厂java后端开发中非常重视代码规范,包括命名规范、注释规范、代码风格等。合理的命名、清晰的注释以及统一的代码风格可以提高代码的可读性和可维护性。 2. 项目结构:大厂通常会要求有清晰、合理的项目结构,包括分模块、分层等。每个模块的功能要明确,便于团队合作开发和维护。 3. 运行环境:大厂一般会规定开发环境、测试环境和生产环境的配置。开发环境需要包括所需的IDE、数据库、版本控制等,测试环境的配置要与生产环境尽量一致,保证测试的有效性。 4. 数据库设计:在数据库设计上,需要规范表的命名、字段的命名以及数据类型的选择。合理的数据库设计可以提高查询性能和数据存储的效率。 5. 接口设计:对于大型后端项目,接口的设计尤为关键。接口需要规范输入输出参数、返回结果的格式、错误码等方面,以提供给前端或其他系统使用。 6. 测试规范:大厂通常会要求进行单元测试、集成测试和性能测试等。测试代码的编写规范同样重要,可以保证代码的质量和功能的正确性。 7. 代码管理:大厂一般会使用版本控制工具对代码进行管理,如Git。规范的代码提交、分支管理以及代码合并流程可以保证团队协作的顺利进行。 以上是大厂java后端开发规范的几个方面,通过遵循这些规范,可以提高代码的质量和开发效率,同时也有利于团队协作和项目的维护。 ### 回答2: 大厂Java后端开发规范是指在大型软件开发公司或互联网公司中,Java后端开发人员遵循的一定规范和标准,以保证团队合作效率、代码质量和系统可维护性。以下是一些常见的大厂Java后端开发规范: 1. 代码规范:采用统一的命名规范,如驼峰命名法,避免使用拼音或缩写等不规范命名方式。代码格式应统一,使用约定俗成的缩进、空格、注释等规范,提高代码的可读性。 2. 设计模式:遵循常见的设计模式,如单例模式、工厂模式、观察者模式等,提高代码的可重用性和可扩展性,降低耦合度。 3. 异常处理:合理处理异常,使用try-catch块捕获异常并进行适当的处理,避免异常影响系统的稳定性和可用性。 4. 数据库操作:使用数据库连接池进行数据库连接,避免频繁地创建和关闭连接。使用预编译语句或者ORM框架进行数据库操作,提高数据库访问性能。 5. 日志记录:使用统一的日志框架,如log4j、slf4j等,记录关键操作和异常信息,方便系统的排查和定位问题。 6. 并发控制:合理使用线程池和锁机制,控制并发访问,保证数据的正确性和系统的性能。 7. 测试规范:编写良好的单元测试和集成测试,覆盖核心代码。使用相关的测试框架和工具,如JUnit、Mockito等,提高测试效率和代码质量。 8. 安全规范:对用户输入进行合理的校验和过滤,避免安全漏洞。对重要信息进行加密传输,保证数据的安全性。 以上是大厂Java后端开发常见的规范,遵循这些规范可以提高代码的质量和可维护性,提高团队协作效率,保证整个系统的稳定性和可用性。 ### 回答3: 大厂 java 后端开发规范可以从以下几个方面进行描述。 1. 代码风格规范:大厂 java 后端开发规范会要求遵循统一的代码风格,包括代码缩进、命名规范、注释规范等。这样可以提高代码的可读性和可维护性。 2. 设计模式规范:大厂 java 后端开发规范会强调使用设计模式来解决常见的设计问题,例如单例模式、工厂模式、代理模式等。这样可以提高代码的可扩展性和灵活性。 3. 异常处理规范:大厂 java 后端开发规范会明确规定如何处理异常,包括捕获异常、处理异常和抛出异常等。这样可以提高系统的稳定性和可靠性。 4. 数据库访问规范:大厂 java 后端开发规范会规定如何进行数据库的访问,包括使用什么类型的数据库连接池、如何编写 SQL 语句等。这样可以提高数据库操作的效率和安全性。 5. 接口设计规范:大厂 java 后端开发规范会要求清晰定义接口的输入和输出,遵循 RESTful 设计原则,使用合适的 HTTP 方法和状态码等。这样可以提高接口的可用性和易用性。 6. 性能优化规范:大厂 java 后端开发规范会指导如何进行性能优化,包括数据库查询优化、缓存设计和使用合适的并发控制等。这样可以提高系统的响应速度和并发能力。 7. 安全规范:大厂 java 后端开发规范会强调安全性,包括防止 SQL 注入、XSS 攻击、CSRF 攻击等。这样可以提高系统的安全性和抵御恶意攻击的能力。 总之,大厂 java 后端开发规范旨在提高团队协作效率、代码质量和系统性能,保证软件项目的高效开发和稳定运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值