2024年Java架构篇之数据结构与算法面试题

2024年Java实战面试题_java 5 年 面试-CSDN博客
2024年Java架构篇之数据结构与算法面试题
1、判断一个数是否是2的N次方,比如2、4、8、16是6、10不是
1:01、2:10、3:011、4:100、7:0111、8:1000、15:01111、16:10000
if(n&(n-1) == 0) 那么n就是2的次方 n > 1

2、算法的五个特征、设计原则
五个特征:有穷性、确定性、可行性、有输入、有输出
设计原则:正确性、可读性、健壮性bug:懂算法写出的代码很少有bug,而且系统比较稳定
高效率、低存储:内存+CPU
算法的两个重要指标:时间复杂度+空间复杂度

3、时间复杂度计算的意义:压测、冒烟要依赖测试环境,流程很长,搞得规模或者数据不准确,应该用自己代码分析,也就是时间复杂度。

4、时间复杂度表示方法:大O表示法、O(n),O(nlogn);
O(1),O(n),O(nlogn),O(n^2),O(n+1),O(logn),O(n!)

5、几种常见的时间复杂度:
常数:O(1)
对数:O(logn)
线性:O(n)
线性对数:O(nlogn)
平方:O(n^2)
N次方:O(n^n)

6、怎么找时间复杂度
1、找有循环的地方
2、找有网络请求的地方(RPC、远程调用、分布式、数据库请求)的地方。
就是测试时间:log打印、计算平均时间。

7、几种常见的时间复杂度总结
学了时间复杂度,那我们的目的就是要把代码写到最优,效率最高:
O(1)>O(logn)>O(n)>O(nlogn)>O(n^2)>O(n^x)
O(1)>O(logn)>O(n)>O(nlogn)效果都是很好的。几乎优化的空间不是很大。
登录:判断用户名密码O(1)到数据库里查记录:分布式 缓存。
列表的接口:排序,冒泡排序:=>找更优秀的排序算法 快速排序,归并排序,堆排序。
优化的目标就是要往O(1)的方向接近。

8、面试算法方面经典
链表、排序算法、二叉树、红黑树、B-Tree、B+Tree

你可能感兴趣的:(2024年Java面试题,数据结构,架构师,算法)