字节飞书实习一面复盘,2025全新 Java 面经,附面试题答案整理+ Java 题库!

alt

你用过哪些Linux命令?

文件与目录操作

lscdmkdir,rmcpmv

文件内容查看

catmore/lesstailhead

系统管理

pstop/htopkill/killalldfdu

网络配置与调试

pingifconfig/ipnetstat/sscurl/wget

文件权限与用户管理

chmodchownuseradd/userdelpasswd

如何根据进程名字搜进程ID?

使用 pgrep 命令来根据进程名称(进程的名字)查找进程的 PID(进程 ID)

▼bash

pgrep <进程名称>

比如查找 nginx 的进程ID

▼bash

pgrep nginx

如何查看服务器的负载情况,使用什么命令?

可以使用 top 命令,输出的结果如下

▼yaml

top - 12:36:29 up 10 days,  3:19,  3 users,  load average: 0.05, 0.08, 0.01
Tasks: 147 total,   1 running, 146 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.2 us,  1.5 sy,  0.0 ni, 95.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  16000.0 total,   1200.0 free,   8000.0 used,   4800.0 buff/cache
MiB Swap:   4000.0 total,   2000.0 free,   2000.0 used.  6000.0 avail Mem

load average: 0.05, 0.08, 0.01 就是负载平均值,表示过去 1 分钟、5 分钟、15 分钟内的平均负载。

0.05 表示在过去 1 分钟内,平均有 0.05 个进程正在等待 CPU 或执行中。这个值很低,说明在过去 1 分钟内,系统几乎没有负载。

假设当前服务器有 4 个 CPU 核心,那么负载为 4.0 说明系统刚好处于满载状态。

Linux进程和线程有什么区别?

**进程:**是资源分配的基本单位,

**线程:**是 CPU 调度的基本单位,属于进程,一个进程中可以包含多个线程。

二者资源消耗不同,通信方式也不一样。

逻辑地址和物理地址的区别是什么?为什么要使用逻辑地址和物理地址?

物理地址是计算机内存中真正的内存单元地址,由内存管理单元(MMU)直接访问。它表示数据在物理内存中的实际存储位置,是由硬件层面决定的。逻辑地址是程序在运行时看到的地址空间,由CPU生成。

使用逻辑地址和物理地址,有历史发展的因素,也可以保障安全性。操作系统中使用**分段(Segmentation)分页(Paging)**管理内存,提高内存利用率并简化程序的管理。

在Java中,数组和链表有什么区别?

在存储结构方面

数组基于连续的内存块,大小是固定的,需要重新分配内存来改变数组大小,内存使用紧凑但容易浪费空间。

链表是基于节点的结构,在内存中不需要连续存储,可以动态变化大小和插入删除节点,内存不连续但可以动态扩展。

在访问速度方面

数组支持 O(1) 时间的随机访问,可以通过索引直接访问任何元素。

▼text

复制代码+----+----+----+----+----+----+
| 10 | 20 | 30 | 40 | 50 | 60 |
+----+----+----+----+----+----+
^
|
Index

而链表访问特定元素需要线性时间O(n),因为节点在内存中不一定连续,访问效率受限于链表的结构。

▼text

复制代码Head
 |
 v
+----+----+     +----+----+     +----+----+
| 10 | *----> | 20 | *----> | 30 | *----> NULL
+----+----+     +----+----+     +----+----+
     ^               ^               ^
     |               |               |
   Node             Node             Node

在操作方面

数组插入和删除需要移动数据,时间复杂度为 O(n),而链表则很灵活,可在 O(1) 时间插入和修改指定位置元素。

在适用场景方面

数组适合需要快速随机访问且大小固定的场景,如实现缓存、表格等数据结构。

链表适合需要频繁插入和删除操作且大小不确定的场景,如队列、栈、链表等

Java中的HashMap是怎么实现的?

HashMap 是基于哈希表的数据结构,用于存储键值对key-value)。其核心是将键的哈希值映射到数组索引位置,通过数组 + 链表(在 Java 8 及之后是数组 + 链表 + 红黑树)来处理哈希冲突。

HashMap 使用键的 hashCode() 方法计算哈希值,并通过 indexFor 方法(JDK 1.7 及之后版本移除了这个方法,直接使用 (n - 1) & hash)确定元素在数组中的存储位置。哈希值是经过一定扰动处理的,防止哈希值分布不均匀,从而减少冲突。

HashMap 的默认初始容量为 16,负载因子为 0.75。也就是说,当存储的元素数量超过 16 × 0.75 = 12 个时,HashMap 会触发扩容操作,容量x2并重新分配元素位置。这种扩容是比较耗时的操作,频繁扩容会影响性能。

在多线程编程中,你用过哪些工具?

可以举例,比如:ConcurrentHashMap、AtomicInteger、Semaphore、CyclicBarrier、CountDownLatch、BlockingQueue 等等。

具体的并发类分析,可以登陆面试鸭查看扩展知识。

你了解HTTPS吗?它是如何交互来实现“安全”的?

HTTPS 是 HTTP 的安全版本,它通过 SSL/TLS 协议进行加密,确保数据在传输过程中是安全的,不能被轻易截获或篡改。

HTTPS 使用 TLS 协议进行握手,而 TLS 的握手根据密钥交互算法的不同,可以分为两种,一种是 RSA 算法另一种是 ECDHE 算法。

HTTPS RSA 算法握手流程

一共需要四次握手:

  1. 客户端问候(ClientHello)
  2. 服务器问候(ServerHello)
  3. 客户端密钥交换(Client Key Exchange) + 开始使用加密(Change Cipher Spec) + 客户端完成(Client Finished)
  4. 服务器发送开始使用加密(Change Cipher Spec) + 服务器完成(Server Finished)

HTTPS ECDHE 算法握手流程

同样也需要四次握手,大致步骤和 RSA 是一致的,主要区别在第二步:

  1. 客户端问候(ClientHello)
  2. 服务器问候(ServerHello)+ 服务器密钥交换(Client Key Exchange)
  3. 客户端密钥交换(Client Key Exchange) + 开始使用加密(Change Cipher Spec) + 客户端完成(Client Finished)
  4. 服务器发送开始使用加密(Change Cipher Spec) + 服务器完成(Server Finished)

算法

题目:给定一个非递减排序数组 a,请从中删除重复项,使得每个元素只出现一次,并输出新的数组长度。

输入格式

  • a:一个排序整数数组 a(1 ≤ a.length ≤ 10^4^, -10^9^ ≤ a[i] ≤ 10^9^)。

输出格式

  • 输出新的数组长度。

输入样例

▼text

1 1 2 2

输出样例

▼text

2

更多大厂面经、25春招热题、真实高频面试题,就来面试鸭

#牛客在线求职答疑中心#
全部评论
mark 面经
1 回复 分享
发布于 04-11 12:19 安徽

相关推荐

05-23 10:30
已编辑
复旦大学 C++
远离当下内卷职场和惨淡求职环境。拒绝派遣,跳过修士,直签日企,就业一步到位。企业名单见图11.日本IT现状:“每10家IT企业,7家喊‘缺人’!”&nbsp;日本帝国数据库最新调查显示,截至2025年1月,72.5%的IT服务业企业面临正社员短缺,这一比例连续15个月高居各行业榜首,甚至超过建筑业(70.4%)和运输业(66.4%)。与此同时,日本企业因“人手不足倒产”的案例飙升至342家,创历史新高。这场席卷全日本的“正社员荒”,正在将IT行业推向生死存亡的临界点。日本政府近年力推数字化转型(DX),企业对系统开发、AI应用的需求暴增,但本土IT人才储备却严重不足。数据显示,2030年日本IT人才缺口将达79万,而当前IT职位的“有效求人倍率”高达10倍,意味着每1个求职者对应10个岗位,供需矛盾尖锐。——划重点2.项目背景:针对应往届生就业困难问题,与日本本土最大的IT协会合作,定向输送人才至日本各大手企业。经定向委培以及日企面试后与日企直签三年合同(非派遣),以人文技术签前往日本。3.基本薪资:35万左右日元每月、各类补贴、奖金(不低于2个月工资)、日本社会保险。4.培训:需要在上海统一培训IT、日语、商务礼仪等。培训形式:沙龙形式、小班制、日本人0距离交流会话、项目实战、模拟面试等。5.条件:本科,25周岁及以下,计算机类或日语专业(日语能力优秀不限专业)6.开班情况:本年度第一期5月22日开班,15人小班已满员,第二期现在启动招募(滚动班)。有兴趣评论、小窗口我&nbsp;日本&nbsp;&nbsp;日本工作签&nbsp;&nbsp;赴日工作&nbsp;&nbsp;&nbsp;本科&nbsp;&nbsp;求职&nbsp;&nbsp;工签&nbsp;&nbsp;#&nbsp;待业&nbsp;&nbsp;毕业生出路&nbsp;&nbsp;&nbsp;应届生求职&nbsp;&nbsp;毕业生就业&nbsp;&nbsp;出国工作&nbsp;待业&nbsp;&nbsp;就业&nbsp;求职招聘&nbsp;&nbsp;日本就职&nbsp;出国打工&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
点赞 评论 收藏
分享
评论
1
9
分享

创作者周榜

更多
牛客网
牛客企业服务