这次给大家带来的是牛客一位昵称为hel-mal的朋友分享的面经,勾玉在这里做出分析解答,一起看看吧~
一面非常基础
1、计网
TCP和UDP区别,应用在哪一层
TCP和UDP区别
TCP要连接,UDP不用;
tcp一对一,udp一对多、多对多都行;
tcp保证可靠,udp不保证;
tcp拥塞控制、流量控制,udp没有。
tcp和udp在传输层。
osi七层模型
参考本人文章【计算机网络】面试题汇总
什么协议应用了TCP协议
HTTP协议:超文本传输协议,用于普通浏览
HTTPS协议:安全超文本传输协议,身披SSL外衣的HTTP协议
FTP协议:文件传输协议,用于文件传输
POP3协议:邮局协议,收邮件使用
SMTP协议:简单邮件传输协议,用来发送电子邮件
Telent协议:远程登陆协议,通过一个终端登陆到网络
SSH协议:安全外壳协议,用于加密安全登陆,替代安全性差的Telent协议
2、数据结构
常用数据结构有哪些
数组、栈、队列、链表、树、散列表、堆、图
你知道哪些树结构
搜索二叉树, B树, B+树等等
给你树的节点个数,求树的层数,树是完全树
完全二叉树:设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边。
在完全二叉树中,具有n个结点的完全二叉树深度(层数)为(log2n)+1,其中(log2n)+1是向下取整。
3、操作系统
操作系统由什么组成
进程管理、存储管理、设备管理、文件管理、程序接口、用户界面
4、JAVA集合
集合包括哪几类
关于集合请参考Java基础之集合
Queue的实现
队列实现的三种方式:(1)通过数组实现一个队列;(2)通过集合实现一个对列;(3)通过两个堆栈实现一个队列。
LinkedList和ArrayList本质区别,(提示:内存)
同样参考Java基础之集合,简单说就是分别基于链表和数组
5、JVM
有什么垃圾回收器
复制算法和标记整理的区别
这两个都请参考:八股文之【JVM垃圾回收】
6、mysql
- 有什么索引
联合索引、聚簇索引、覆盖索引等等
- 如何连接数据库jdbc,在不使用框架的情况下
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接
String url ="jdbc:mysql://127.0.0.1:3306/mybatis-01";
String username = "root";
String paaaword = "821365";
connection = DriverManager.getConnection(url, username, paaaword);
//3.获取statement,preparedStatement
String sql = "SELECT * FROM tb_user WHERE id = ?";
preparedStatement = connection.prepareStatement(sql);
//4.设置参数,这边的第一个参数代表了id=,第二个参数代表了id的值,如果查询条件有两个则第二个parameterIndex写2
preparedStatement.setLong(1,2);
//5.执行查询,获取结果集
resultSet = preparedStatement.executeQuery();
//6.处理结果集
while (resultSet.next()){
//参数可以写下标也可以写列名(表中的字段)
System.out.println( resultSet.getString("name"));
System.out.println(resultSet.getString("user_name"));
System.out.println(resultSet.getInt("age"));
//报错是因为表中没有这个字段,这是类中的属性 resultSet.getString("username");
}
} finally {
//7.关闭连接,释放资源
resultSet.close();
preparedStatement.close();
connection.close();
}
7、框架
使用过哪些注解
参考SpringBoot最全注解大全
Spring 运行机制?
从ioc和aop角度答即可,IOC就是在依赖注入,用于生成对象,抽象跟实现分开,方便维护。AOP就是切面,可以看做是拦截器。可插拔的服务。
8、Nginx
常用配置
这个很多,自行百度哈,选几个常用的配置项就行,例如反向代理、gzip压缩。
9、linux
1、常用命令
ps、ls、pwd、cat、kill、top、find、grep挑几个常用的介绍即可,最好带上参数
2、如何查找在运行的java程序,及其端口号
ps -aux | grep java 获取pid
再 netstat -nap | grep pid 即可