刷了一个月面试题,终于拿到了字节跳动的offer

news2024/11/25 4:31:01

一面

  • 自我介绍
  • 项目中的监控:那个监控指标常见的有哪些?
  • 微服务涉及到的技术以及需要注意的问题有哪些?
  • 注册中心你了解了哪些?
  • consul 的可靠性你了解吗?
  • consul 的机制你有没有具体深入过?有没有和其他的注册中心对比过?
  • 项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理
  • Spring Boot除了自动配置,相比传统的 Spring 有什么其他的区别?
  • Spring Cloud 有了解多少?
  • Spring Bean 的生命周期
  • HashMap 和 hashTable 区别?
  • Object 的 hashcode 方法重写了,equals 方法要不要改?
  • Hashmap 线程不安全的出现场景
  • 线上服务 CPU 很高该怎么做?有哪些措施可以找到问题
  • JDK 中有哪几个线程池?顺带把线程池讲了个遍
  • 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描
  • SQL 索引的顺序,字段的顺序
  • 查看 SQL 是不是使用了索引?(有什么工具)
  • TCP 和 UDP 的区别?TCP 数据传输过程中怎么做到可靠的?
  • 说下你知道的排序算法吧
  • 查找一个数组的中位数?

二面

你有什么问题想问我的吗?(常规问询)

  • 自我介绍、工作经历、技术栈
  • 项目中你学到了什么技术?
  • 微服务划分的粒度?
  • 微服务的高可用怎么保证的?
  • 负载均衡与反向代理,隔离,限流,降级,超时与重试,回滚,压力测试与应急预案
  • 常用的负载均衡,该怎么用,你能说下吗?

(技术问)

  • http重定向
  • DNS负载均衡
  • 反向代理负载均衡
  • IP负载均衡(LVS-NAT)
  • 直接路由(LVS-DR)
  • IP隧道(LVS-TUN)
  • 网关能够为后端服务带来哪些好处?
  • Spring Bean 的生命周期
  • xml 中配置的 init、destroy 方法怎么可以做到调用具体的方法?反射的机制
  • Object 类中的方法
  • 对象比较是否相同
  • hashmap put 方法存放的时候怎么判断是否是重复的
  • Object toString 方法常用的地方,为什么要重写该方法
  • Set 和 List 区别?
  • ArrayList 和 LinkedList 区别
  • 如果存取相同的数据,ArrayList 和 LinkedList 谁占用空间更大?
  • Set 存的顺序是有序的吗?
  • 常见 Set 的实现有哪些?
  • TreeSet 对存入对数据有什么要求呢?
  • HashSet 的底层实现呢?
  • TreeSet 底层源码有看过吗?
  • HashSet 是不是线程安全的?为什么不是线程安全的?
  • Java 中有哪些线程安全的 Map?
  • HashTable 你了解过吗?
  • 如何保证线程安全问题?
  • synchronized、lock
  • volatile 的原子性问题?为什么 i++ 这种不支持原子性?从计算机原理的设计来讲下不能保证原子性的原因happens before 原理
  • cas 操作
  • lock 和 synchronized 的区别?
  • 公平锁和非公平锁
  • Java 读写锁
  • 读写锁设计主要解决什么问题?
  • 你项目除了写 Java 代码,还有前端代码,那你知道前端有哪些框架吗?
  • MySQL 分页查询语句
  • MySQL 事务特性和隔离级别

二、事务的并发问题

  • 不可重复读会出现在什么场景?
  • sql having 的使用场景
  • 前端浏览器地址的一个 http 请求到后端整个流程是怎么样?
  • http 默认端口,https 默认端口
  • DNS 你知道是干嘛的吗?
  • 你们开发用的 ide 是啥?你能说下 idea 的常用几个快捷键吧?
  • 代码版本管理你们用的是啥?
  • git rebase 和 merge 有什么区别?

你们公司加班多吗?(题外话)

举例回答:

项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理

答:(1). IoC(Inversion of Control)是指容器控制程序对象之间的关系,而不是传统实现中,由程序代码直接操控。控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。 对于Spring而言,就是由Spring来控制对象的生命周期和对象之间的关系;IoC还有另外一个名字——“依赖注入(Dependency Injection)”。从名字上理解,所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,即由容器动态地将某种依赖关系注入到组件之中。

(2). 在Spring的工作方式中,所有的类都会在spring容器中登记,告诉spring这是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

(3). 在系统运行中,动态的向某个对象提供它所需要的其他对象。

(4). 依赖注入的思想是通过反射机制实现的,在实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。 总而言之,在传统的对象创建方式中,通常由调用者来创建被调用者的实例,而在Spring中创建被调用者的工作由Spring来完成,然后注入调用者,即所谓的依赖注入or控制反转。 注入方式有两种:依赖注入和设置注入; IoC的优点:降低了组件之间的耦合,降低了业务对象之间替换的复杂性,使之能够灵活的管理对象。

AOP(Aspect Oriented Programming)

(1). AOP面向方面编程基于IoC,是对OOP的有益补充;

(2). AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了 多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的 逻辑或责任封装起来,比如日志记录,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

(3). AOP代表的是一个横向的关 系,将“对象”比作一个空心的圆柱体,其中封装的是对象的属性和行为;则面向方面编程的方法,就是将这个圆柱体以切面形式剖开,选择性的提供业务逻辑。而 剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹,但完成了效果。

(4). 实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

(5). Spring实现AOP:JDK动态代理和CGLIB代理 JDK动态代理:其代理对象必须是某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理;其核心的两个类是InvocationHandler和Proxy。 CGLIB代理:实现原理类似于JDK动态代理,只是它在运行期间生成的代理对象是针对目标类扩展的子类。CGLIB是高效的代码生成包,底层是依靠ASM(开源的java字节码编辑类库)操作字节码实现的,性能比JDK强;需要引入包asm.jar和cglib.jar。 使用AspectJ注入式切面和@AspectJ注解驱动的切面实际上底层也是通过动态代理实现的。

(6). AOP使用场景:

  • Authentication 权限检查
  • Caching 缓存
  • Context passing 内容传递
  • Error handling 错误处理
  • Lazy loading延迟加载
  • Debugging 调试
  • logging, tracing, profiling and monitoring日志记录,跟踪,优化,校准
  • Performance optimization性能优化,效率检查
  • Persistence 持久化
  • Resource pooling资源池
  • Synchronization同步
  • Transactions 事务管理

另外Filter的实现和struts2的拦截器的实现都是AOP思想的体现。

字节面试场景以及面试答案(文档总结)

知其然不知其所以然,大厂常问面试技术如何复习?

1、热门面试题及答案大全

面试前做足功夫,让你面试成功率提升一截,这里一份热门350道一线互联网常问面试题及答案助你拿offer

2、多线程、高并发、缓存入门到实战项目pdf书籍

3、文中提到面试题答案整理

4、Java核心知识面试宝典

覆盖了JVM 、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(二)fiber的基本认识

上一篇文章我们了解了react新老结构的差异以及存在的缺点&#xff0c;其中react的解决方案就是采用fiber架构和添加Schedule模块。 ✍️&#xff1a;Schedule模块的主要工作是任务的调度&#xff0c;负责调度不同优先级任务的执行时机&#xff0c;这个我们后面再讲&#xff0c;…

Ardor公链生态与Jelurida产业区块链布局

Ardor公链 Ardor公链&#xff08;ARDR&#xff09;基于NXT公链&#xff0c;并于2018年1月1日推出了多链架构&#xff0c;旨在克服单链本质上的局限性。根据Ardor平台的白皮书&#xff0c;其主要目标是&#xff1a; 解决最终用户必须拥有作为手续费&#xff08;Gas费&#xff…

FineReport复杂表格软件- 相对层次坐标

1. 概述 相对层次坐标是用来描述目标单元格和当前单元格之间的位置关系的表达式&#xff0c;概念图如下图所示&#xff1a; 说明&#xff1a; 参数 说明 Cellx 表示需要返回结果的单元格 Celly 表示位移时参考的单元格 z 代表相对位移的位置 注&#xff1a;相对后移需要…

【Linux】必须掌握的Linux常见指令分类讲解

目录一.Linux下的文件树二.工作目录切换命令1.ls——显示当前路径下的文件和目录2.pwd——显示当前目录的绝对值路径3.cd——切换至指定目录三.文件目录管理命令1.touch——创建空文件2.tree——树状打印目录3.mkdir——创建目录4.rmdir 和 rm ——删除目录5.cp——拷贝文件或目…

Python编程小白入门技巧,从入门到精通只需一个月。

毫无疑问&#xff0c;Python 是当下最火的编程语言之一。对于许多未曾涉足计算机编程的领域「小白」来说&#xff0c;深入地掌握 Python 看似是一件十分困难的事。其实&#xff0c;只要掌握了科学的学习方法并制定了合理的学习计划&#xff0c;Python 从 入门到精通只需要一个月…

【iOS】接口与API设计

文章目录前言用前缀避免命名空间冲突提供“全能初始化方法”实现description方法尽量使用不可变对象使用清晰而协调的命名方式方法命名类与协议的命名为私有方法名加前缀理解Objective-C错误模型理解NSCopying协议前言 我们在构建程序应用时&#xff0c;如果决定重用代码&…

DPDK 网卡驱动学习

DPDK版本19.02 初始化&#xff1a; /* Launch threads, called at application init(). */ int rte_eal_init(int argc, char **argv) {.../* rte_eal_cpu_init() ->* eal_cpu_core_id()* eal_cpu_socket_id()* 读取/sys/devices/system/[cpu|node]* 设置lcore_con…

考试管理系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 模块划分&#xff1a;老师模块、班级模块、学生模块、课程模块、试题模块、试卷模块、 组卷模块、考试模块、答题模块 管…

Python数据分析实战之用户消费行为数据分析

任务1&#xff1a;数据预处理 表格数据资源如下百度网盘&#x1f447; 链接&#xff1a;https://pan.baidu.com/s/1pUYfRIe557v6O9ByB2rhEw 提取码&#xff1a;ovgl import numpy as np import pandas as pd import matplotlib.pyplot as plt # %matplotlib inline # 更改绘…

OrangePi 5 Docker下安装OpenWRT作软路由(同样适用于树莓派等设备)

OrangePi5 Docker下安装OpenWRT作软路由&#xff08;同样适用于树莓派等设备&#xff09; 说明 本文的软路由作为家中的二级路由&#xff0c;用一根网线连接主路由的LAN口和二级路由的WAN口&#xff08;当主路由使用配置类似&#xff09; 如果你想要作为旁路由或中继路由使用…

VUE中render渲染函数(h函数)

vue在绝大多数情况下都推荐使用模板来编写html结构,但是对于一些复杂场景下需要完全的JS编程能力&#xff0c;这个时候我们就可以使用渲染函数 &#xff0c;它比模板更接近编译器 vue在生成真实的DOM之前&#xff0c;会将我们的节点转换成VNode&#xff0c;而VNode组合在一起形…

巡更标签 “ PE29_BLE_XG

在我们日常中有一些场景涉及到打卡&#xff0c;比如一个设备需要维护&#xff0c;需要每天有工作人员到现场进行检查或者维护操作&#xff0c;目前普通的做法是弄个二维码到场扫码或者本子记录&#xff0c;用记录的方式明显太落后&#xff0c;容易导致监管不好操作&#xff0c;…

STM32 51单片机——搭建keil5的开发环境(ARM)

知识点&#xff1a;keil/proteus搭建概述、环境搭建 实训day1——12月19日 目录 1 keil安装 1.1 安装KEIL5 安装包 步骤1&#xff1a; 步骤2&#xff1a; 步骤3&#xff1a; 步骤4&#xff1a; 步骤5&#xff1a; 1.2 添加License 步骤1&#xff1a; 步骤2&#xff…

LabVIEW中忽略特定错误

LabVIEW中忽略特定错误 在LabVIEW中收到错误&#xff0c;但已经确认它不会对我的应用程序产生负面影响。如何忽略或清除此错误&#xff1f; LabVIEW程序因为出现错误而中止&#xff0c;但希望代码在收到此错误后继续。怎样才能做到这一点&#xff1f; 解决方案 忽略错误有三…

实验9 利用Wireshark软件分析DHCP

目录 一、实验目的及任务 二、实验环境 三、预备知识 四、实验步骤 五、实验报告内容 一、实验目的及任务 1.通过协议分析进一步明确DHCP报文格式中各字段语法语义&#xff1b; 2.进一步明确DHCP工作原理并能够描述 二、实验环境 联网的计算机&#xff1b;主机操作系…

iead中安装Lombok插件、Lombok注解的使用

Lombok插件安装&#xff1a; 1.pom.xml引入Lombok依赖包&#xff1a; <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></dependency>2.file-setting: 安装Lom…

Python中变量的定义和使用规则

一、如何理解Python中的变量 在解释变量这个东东之前&#xff0c;我先给大家看一组代码&#xff0c;如下图&#xff1a; 上图里面&#xff0c;a作为变量&#xff0c;每次存放的数据和数据类型都不同。看到这里大部分人应该明白了&#xff0c;变量就是随时都可以改变的量&#…

[附源码]计算机毕业设计Python的桌游信息管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

UG/NX二次开发Siemens官方NXOPEN实例解析—2.2 Selection

列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析—2.1 AssemblyViewer UG/NX二次开发Siemens官方NXOPEN实例解析—2.2 Selection 列文章目录 文章目录 前言 一、知识点提取 二、案例需求分析 三、程序分析 总结 前言 随着工业智能化的不断发展&#xff0c;UG二次开…

代码随想录训练营第十二天

专题&#xff1a;栈和队列 题目&#xff1a;滑动窗口最大值 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 题目解析&#xff1a;…