这次给大家带来的是牛客一位昵称为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

  1. 有什么索引

联合索引、聚簇索引、覆盖索引等等

  1. 如何连接数据库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 即可