2024年最全腾讯笔经面经(微信事业群),java接口开发面试题

最后

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

if(head1.data<head2.data){

reHead=head1;

temp=head1;

head1=head1.next;

}else{

reHead=head2;

temp=head2;

head2=head2.next;

}

//两个链表逐个结点开始比较,

while(head1!=null&&head2!=null){

if(head1.data<head2.data){

temp.next=head1;

head1=head1.next;

temp=temp.next;

}else{

temp.next=head2;

head2=head2.next;

temp=temp.next;

}

}

//如果两个链表中的任意一个没有被比较完,直接被接在新链表的后面

if(head1!=null)

temp.next=head1;

if(head2!=null)

temp.next=head2;

return reHead;

}

4、手写快排算法,快排的时间复杂度是多少?最差情况是多少?为什么?

我的回答:快排的时间复杂度是O(logn),最差是O(n*n),对有序的数组进行快排的时候会出现最差情况,近似是冒泡排序,因为基数的移动每次都向后移动一位

public void quickSort (int[] array, int start, int end) {

if (array == null || array.length == 0) {

return;

}

int i = start, j = end;

int temp = array[start];

while (i < j) {

while(array[j] > temp && i < j) {

–j;

}

while(array[i] <= temp && i < j) {

++i;

}

int x = array[i];

array[i] = array[j];

array[j] = x;

}

array[start] = array[i];

array[start] = temp;

quickSort(array, start, i-1);

quickSort(array, i+1, end);

}

二、技术面试题


  1. “ == ”和equals的区别

== 是比较两个引用之间是否指向同一个对象,也就是比较两个引用存储的地址是否相等

equals在Object中比较的是两个对象的hashcode,日常我们实现基类时覆盖Object的equals方法,

例如User时,在equals中对属性name,age进行比较

  1. Hash算法你知道哪些?

我只知道一致性hash算法,然后拓展的说了下自己在项目中如何用到一致性哈希

算法的(Dubbo的一致性哈希算法实现负载均衡算法)

  1. 哈希碰撞的解决方案有哪些?说说开放定址法原理
  • HashMap应用的链表法

  • 开放定制法:感兴趣自行百度下,太多了,博主就不啰嗦了

  1. TreeMap和HashMap 的区别

看过源码,了解TreeMap是基于红黑树的,所以元素是有序的

HashMap是基于哈希算法的,元素是乱序存放

  1. 说说红黑树和Avl树

读者自行百度?

  1. 缓存淘汰算法

我的第一想法是Redis的LRU算法,之前看过Redis的源码,所以直接说了Redis几种常用的淘汰算法,

包括随机淘汰算法,FIFO淘汰算法,以及默认算法:删除不常用的key,使用双向链表维护所有被

使用的key,频繁使用的key存放在链表的表头附近,淘汰机制只需要淘汰表尾的元素

  1. TCP三次握手、四次挥手

  2. HTTP、HTTPS的区别

有必要和读者说说这儿:

  • HTTPS相对于HTTP的文本传输变换为二进制传输,安全快捷

  • HTTPS添加SSL协议,保障传输安全

  • HTTPS默认支持长连接,采用多路复用机制

  • HTTPS服务端支持反馈更多信息给应用端

  1. SSL过程

读者自行百度,博主建议挖透式学习

  1. 进程和线程的共同点和区别

共同点:拥有CPU的执行权、切换

区别:

  • 进程可包含多个线程

  • 进程管理资源,线程不能

  • 进程之间的切换消耗比线程之间的切换大

  • 线程之间共享进程的公共资源

  1. 进程之间的通信,线程之间的通信

进程之间可以通过RPC、消息中间件、Socket,全局变量等通信

线程之间可以通过共享变量、管道、wait/notify机制

  1. 你知道协程吧?

不知道?

  1. 你知道系统中的大小端吧?

不知道?

  1. 你用过BIO、NIO、AIO,说说他们之间的区别吧

BIO:同步阻塞式,一个socket请求对应一个线程处理,耗时耗资源

NIO:同步非阻塞,socket请求由线程池来处理(boss、worker线程池原理)

AIO:异步化

我另外解释了下系统底层的实现select、poll、epoll的区别:

  • select每次执行select方法,都会从用户态拷贝所有的fd文件到内核态中,存储在内核态的数组中,数组大小默认1024个,存放的fd文件数量受限制

  • select采用轮训的方式寻找有事件的fd文件

  • 对有事件的fd文件再次拷贝到用户态做相应的处理

  • epoll有三个函数:epoll_create、epoll_ctl、epoll_wait,epoll_create在内核态启动时创建红黑树和就绪队列,红黑树相对于select的数组所容纳的fd文件数量更多,效率更高

  • epoll_ctl负责将用户态的fd文件符拷贝到内核的红黑树中,并且制定相应的回调接口,当fd文件符有事件时,回调接口,将fd文件移动到就绪队列中

  • epoll_wait负责监听就绪队列是否有就绪的fd文件,有的话拷贝到用户态,否则,继续睡眠,等待被唤醒

  1. 内核态与用户态的交互过程

我按照自己理解说了下线程之间的上下文切换,进程之间的切换,主要是一些信息的拷贝,比较耗时,

如果切换次数过多的话,会对CPU的性能带来影响。

  1. 怎么看系统的CPU信息

我说到常用的TOP命令会看到系统的CPU使用率,内存等信息;还有vmstat查看上下文切换信息

  1. 给了我一段代码

String a = “aaaaaa”;

int b;

int test (int i) {

b = i;

}

int main () {

int temp = 0;

int c = test(temp);

return c;

}

问在进程中这些信息的布局

我的回答:

变量a:首先字符串在JVM中是常量,所以a变量肯定存放在常量池中,而常量池存放在JVM中的永久代中。

变量i、b、temp、c:基本变量类型和临时变量都是存放在JVM栈的栈桢中,每个栈桢包含临时变量,变量值等信息

方法test:方法是被线程调用的,所以方法存在于栈中,调用方法的过程进栈,返回方法的过程是出栈

  1. 给了一段代码,问我char和int各占几个字节,这几个变量一共占了多少字节,JVM内存对齐知道吗?

代码

struct {

char a;

int b;

char c;

}

回答:

  • char和int分别各占2、4个字节

  • 这几个变量共占了8个字节(这是我的回答,是错误的)

面试官问我知道JVM内存对齐知道吗?我第一反应想到的是JVM内存中的对象布局,

里面有一块内存叫对齐填充,意思是JVM对象头占用最少8个字节,

实例数据和对象头+内存填充的内存必须是8字节的整数倍

面试官纠正:三个变量共占用24个字节,因为这一块需要内存对齐,意思是按照内存分配最大的变量分配其

他变量的内存

  1. 用过什么数据库?在MySQL中使用什么引擎?
  • 之前使用的MySQL,在阿里实习转正期间使用了Oracle

  • 在MySQL中使用InnoDB引擎,还有一个叫MyISAM引擎

  1. 说说InnoDB和MyISAM的区别

写在最后

为了这次面试,也收集了很多的面试题!

以下是部分面试题截图

Java程序员秋招三面蚂蚁金服,我总结了所有面试题,也不过如此

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

这一块需要内存对齐,意思是按照内存分配最大的变量分配其

他变量的内存

  1. 用过什么数据库?在MySQL中使用什么引擎?
  • 之前使用的MySQL,在阿里实习转正期间使用了Oracle

  • 在MySQL中使用InnoDB引擎,还有一个叫MyISAM引擎

  1. 说说InnoDB和MyISAM的区别

写在最后

为了这次面试,也收集了很多的面试题!

以下是部分面试题截图

[外链图片转存中…(img-48SBFpER-1715119633813)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值