2019年Java面试题(腾讯)
下面是2019年的一次腾讯公司的面试题目,分享给大家,希望能对大家有所帮助。
(推荐视频教程:java教学视频)
- 从简历项⽬中选⼀个项⽬,说说你在其中遇到了什么重⼤挑战?以及你的解决问题的思路?
- ⼀段代码要执⾏多个redis命令,不加锁的情况下如何保证原⼦性?
使⽤lua脚本:https://segmentfault.com/a/1190000009811453 - 谈谈数据结构,⽐如⼆叉树、红⿊树?
理解这篇:https://juejin.im/post/5a27c6946fb9a04509096248 - 说说B-tree、B+tree的区别和使⽤场景?
- B-tree:
B-tree 利⽤了磁盘块的特性进⾏构建的树。每个磁盘块⼀个节点,每个节点包含了很关键字。把树的节点关键字增多后树的
层级⽐原来的⼆叉树少了,减少数据查找的次数和复杂度。
B-tree巧妙利⽤了磁盘预读原理,将⼀个节点的⼤⼩设为等于⼀个⻚(每⻚为4K),这样每个节点只需要⼀次I/O就可以完
全载⼊。
B-tree 的数据可以存在任何节点中。 - B+tree:
B+tree 是 B-tree 的变种,B+tree 数据只存储在叶⼦节点中。这样在B树的基础上每个节点存储的关键字数更多,树的层级
更少所以查询数据更快,所有指关键字指针都存在叶⼦节点,所以每次查找的次数都相同所以查询速度更稳定; - mysql哪个版本哪个存储引擎的索引使⽤的B+tree,为什么不使⽤红⿊树?
需要先理解B+tree、红⿊树的实现原理。B+tree带有顺序访问指针,是红⿊树不具备的。 - 说说⼏种常⻅的消息中间件的区别?
- 中⼩型公司⾸选RabbitMQ:管理界⾯简单,⾼并发。
- 更多相关面试题推荐:java面试题及答案
- ⼤型公司可以选择RocketMQ:更⾼并发,可对rocketmq进⾏定制化开发。
- ⽇志采集功能,⾸选kafka,专为⼤数据准备。
- rabbitmq如何保证消息的可靠性?
详⻅“⾯试题库/rabbitmq” - springcloud服务发现原理?
a. 每30s发送⼼跳检测重新进⾏租约,如果客户端不能多次更新租约,它将在90s内从服务器注册中⼼移除。
a. 注册信息和更新会被复制到其他Eureka 节点,来⾃任何区域的客户端可以查找到注册中⼼信息,每30s发⽣⼀次复制来定位他们的服务,并进⾏远程调⽤。
b. 客户端还可以缓存⼀些服务实例信息,所以即使Eureka全挂掉,客户端也是可以定位到服务地址的。 - 介绍下springcloud各个组件?springcloud的注册中⼼除了eureka还可以⽤什么?
springcloud的⼯作原理
特性 ActiveMQ RabbitMQ RocketMQ kafka
开发语⾔ java erlang java scala
单机吞吐量 万级 万级 10万级 10万级
时效性 ms级 us级 ms级 ms级以内
可⽤性 ⾼(主从架构) ⾼(主从架构) ⾮常⾼(分布式架构) ⾮常⾼(分布式架构)
功能特性
成熟的产品,在很多公司得到应⽤;有较多的⽂档;各种协议⽀持较好
基于erlang开发,所以并发能⼒很强,性能极其好,延时很低;管理界⾯较丰富
MQ功能⽐较完备,扩展性佳
只⽀持主要的MQ功能,像⼀些消息查询,消息回溯等功能没有提供,毕竟是为⼤数据准备的,在⼤数据领域应⽤⼴。
springcloud由以下⼏个核⼼组件构成:
Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从⽽知道其他服务在哪⾥
Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从⼀个服务的多台机器中选择⼀台
Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
Hystrix:发起请求是通过Hystrix的线程池来⾛的,不同的服务⾛不同的线程池,实现了不同服务调⽤的隔离,避免了服务雪崩
的问题
Zuul:如果前端、移动端要调⽤后端系统,统⼀从Zuul⽹关进⼊,由Zuul⽹关转发请求给对应的服务
注册中⼼还可以⽤zookeeper。 - 微服务有⼏种限流⽅式?
spring cloud gateway:https://windmt.com/2018/05/09/spring-cloud-15-spring-cloud-gateway-ratelimiter/ - 限流的情况下,服务隔离还有没有必要?
https://www.javazhiyin.com/25964.html - dubbo有⼏种负载均衡?负载均衡是在服务端还是客户端?
Dubbo负载均衡在客户端,dubbo内置了4种负载均衡策略:
a. RandomLoadBalance:随机负载均衡。随机的选择⼀个。是Dubbo的默认负载均衡策略。
b. RoundRobinLoadBalance:轮询负载均衡。轮询选择⼀个。
c. LeastActiveLoadBalance:最少活跃调⽤数,相同活跃数的随机。活跃数指调⽤前后计数差。使慢的 Provider 收到更少请求,
因为越慢的 Provider 的调⽤前后计数差会越⼤。
d. ConsistentHashLoadBalance:⼀致性哈希负载均衡。相同参数的请求总是落在同⼀台机器上。 - 如何实现redis分布式锁?需要注意什么问题?
了解这篇:https://juejin.im/post/5bbb0d8df265da0abd3533a5 - 说说你看过的源码?其中⽤到了什么设计模式或者设计亮点?
具体分析,⾯试前需要熟读⼀些源码,如spring源码。 - 如何实现aop?项⽬中哪些地⽅⽤到了aop?
掌握:https://juejin.im/post/5bf4fc84f265da611b57f906 - 后置处理器的作⽤?
Spring中bean后置处理器BeanPostProcessor:https://www.jianshu.com/p/f80b77d65d39 - spring bean作⽤域,什么时候使⽤request作⽤域。
详读:https://blog.csdn.net/icarus_wang/article/details/51586776 - 说说下⾯这道题的结果?
1 package com.giveu.web; 2 3 public class VolatileTest { 4 public static volatile int race = 0; 5 6 public static void increase() { 7 race++; 8 } 9 10 private static final int THREADS_COUNT = 10; 11 12 public static void main(String[] args) { 13 Thread[] threads = new Thread[THREADS_COUNT]; 14 for (int i = 0; i < THREADS_COUNT; i++) { 15 threads[i] = new Thread(new Runnable() { 16 @Override 17 public void run() { 18 for (int i = 0; i < 10000; i++) { 19 increase(); 20 } 21 } 22 }); 23 threads[i].start(); 24 } 25 while (Thread.activeCount() > 1) { 26 Thread.yield(); 27 } 28 System.out.println(race); 29 } 30
Salin selepas log masuk
程序不结束,并且没有打印。
相关推荐:java入门教程
Atas ialah kandungan terperinci 2019年Java面试题(腾讯). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4
