百度一面面经及答案
写在前面
这次面经基本都被我之前整理的大厂面试八股文涵盖了,有兴趣的同学可以到我之前的讨论贴查看我之前整理的八股文
常见linux命令
ls 查看当前目录下文件和文件夹
cd 进入当前目录
mkdir 创建文件夹
touch 创建文件
su 进入root权限
rm 删除文件或文件夹
cp 复制文件
mv 移动文件
git使用
首先初始化仓库:
git init - 初始化仓库。
或者下载远程代码库
git pull 下载远程代码并合并
其次添加文件
git add . - 添加文件到暂存区。
git commit - 将暂存区内容添加到仓库中。
最后推向远程代码库
git push 上传远程代码并合并
重写重载区别
重写即子类重写父类的方法,方法对应的形参和返回值类型都不能变。
重载即在一个类中,方法名相同,参数类型或数量不同。
springboot和spring区别
spring框架是一个基于DI和AOP模型设计的一系列应用组件,并且基于该组件,设计了MVC框架,配置文件较为繁琐。
为了简化设计流程,springboot横空出世,利用springboot的默认方式,能很快开发出新的WEB应用。
redis整合到springboot
- pom文件添加依赖项spring-boot-starter-data-redis
- Springboot中application.properties添加redis服务器ip账户与密码端口号
- 利用Autowired注入redisTemplate
- 利用redisTemplate进行相关操作
springboot怎么解析一个url
springboot starter集成了springmvc,因此解析url方式与springmvc一致。
- 客户端发送url
- 核心控制器Dispatcher Servlet接收该请求,通过映射器配置Handler mapping,将url映射的控制器controller返回给核心控制器。
- 通过核心控制器找到适配器,调用实现对应接口的处理器,并将结果返回给适配器,
- 适配器将获取的数据返回给核心控制器
- 核心控制器将获取的数据传递给视图解析器,并获取解析得到的结果
- 核心控制器将结果返回给客户端
tcp和udp区别
TCP作为面向流的协议,提供可靠的、面向连接的运输服务,并且提供点对点通信 UDP作为面向报文的协议,不提供可靠交付,并且不需要连接,不仅仅对点对点,也支持多播和广播
http和https区别
http所有传输的内容都是明文,并且客户端和服务器端都无法验证对方的身份。https具有安全性的ssl加密传输协议,加密采用对称加密, https协议需要到ca申请证书,一般免费证书很少,需要交费。
http状态码
1XX:接收的信息正在处理
2XX:请求正常处理完毕
3XX:重定向
4XX:客户端错误
5XX:服务端错误
常见错误码:301:永久重定向 302:临时重定向 304:资源没修改,用之前缓存就行 400:客户端请求的报文有错误 403:表示服务器禁止访问资源 404:表示请求的资源在服务器上不存在或未找到
Get与post区别
Get:指定资源请求数据,刷新无害,Get请求的数据会附加到URL中,传输数据的大小受到url的限制。
Post:向指定资源提交要被处理的数据。刷新会使数据会被重复提交。post在发送数据前会先将请求头发送给服务器进行确认,然后才真正发送数据。
Put与Delete区别
Put规定默认为更新某一资源,和Post一样,一般该操作会对服务器资源进行改变 Delete规定默认为删除某一资源,和Post一样,一般该操作会对服务器资源进行改变
简述栈和队列
栈是一种线性表,其限制只能在表尾进行插入或删除操作。由于该特性又称为后进先出的线性表。队列是一种先进先出的线性表。其限制只能在线性表的一端进行插入,而在另一端删除元素。
hashmap数据结构 链表转红黑树
JDK8 之前底层实现是数组 + 链表,JDK8 改为数组 + 链表/红黑树。主要成员变量包括存储数据的 table 数组、元素数量 size、加载因子 loadFactor。HashMap 中数据以键值对的形式存在,键对应的 hash 值用来计算数组下标,如果两个元素 key 的 hash 值一样,就会发生哈希冲突,被放到同一个链表上。
table 数组记录 HashMap 的数据,每个下标对应一条链表,所有哈希冲突的数据都会被存放到同一条链表,Node/Entry 节点包含四个成员变量:key、value、next 指针和 hash 值。在JDK8后链表超过8会转化为红黑树。
mysql的操作 增删改查
增:INSERT INTO 表名(字段名1,字段名2,…)VALUES(值1,值2,…)
删:DELETE FROM 表名 [WHERE 条件表达式] TRUNCTE [TABLE ] 表名(删除整张表数据)
改:UPDATE 表名 SET 字段名1=值1,[ ,字段名2=值2,…] [ WHERE 条件表达式 ]
查:SELECT 字段名1,字段名2,… FROM 表名 [ WHERE 条件表达式 ]
mysql的查询语法顺序
where、group by、having、order by、limit
mysql索引数据结构 为什么快
mysql通常采用B+树作为索引结构实现
B+树也是是一种自平衡的多叉树。其基本定义与B树相同,不同点在于数据只出现在叶子节点,所有叶子节点增加了一个链指针,方便进行范围查询。
B+树中间节点不存放数据,所以同样大小的磁盘页上可以容纳更多节点元素,访问叶子节点上关联的数据也具有更好的缓存命中率。并且数据顺序排列并且相连,所以便于区间查找和搜索。
delete和truncate区别
delete是数据操纵语言(DML),其按行删除,支持where语句,执行操作采用行锁,执行操作时会将该操作记录在redo和undo中,因此支持回滚。
truncate是数据定义语言(DDL),其操作隐式提交,不支持回滚,不支持where,删除时采用表级锁进行删除。
题目链接:https://www.nowcoder.com/discuss/680617
#Java求职##百度##面经##java工程师#