我把Java岗面试问烂了的题目总结了一下,终于找到一份实习工作!

Posted Java小叮当

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我把Java岗面试问烂了的题目总结了一下,终于找到一份实习工作!相关的知识,希望对你有一定的参考价值。

前言

移动互联网时代,IT 系统变得愈加复杂,对我们程序员的要求也是越来越高,技术不断更新,我们还不能停止学习,停下来了就会被打上一个‘不合格的程序员’的标签,如何成为一位「不那么差」的程序员?「不那么差」的程序员又需要掌握一些什么知识呢?这篇文章就与大家聊一聊这个话题。

以下内容仅代表我从业以来所积累的相关经验,不对不全的地方还请大家海涵,下面我会从硬技能、软实力这些方面尽量阐述我所认为的 “不那么差的程序员” 应当做到哪些技能。

技术栈

作为一名码代码的程序员,怎么说干的还是技术活。既然是技术活那专业实力就得过硬,下面我会按照相关类别谈谈我们应该掌握哪些东西。

计算机基础

主要需要掌握网络与操作系统方面相关的知识(这些知识前期是比较枯燥的)但只要你还在做计算机相关的工作,这些都是绕不开的,当哪天这些知识不经意的帮助到你时你会庆幸当初正确的选择。

数据结构与算法

这块当初在大学时也是最不受待见的一门课程,也是我唯一挂过的科目。

记得当时每次上课老师就让大家用C语言练习书上的习题,看着一个个拆开都认识的字母组合在一起就六亲不认我果断选择了放弃。这也造成现在的我每隔一段时间就要看二叉树、红黑树、栈、队列等知识,加深印象。

这一块内容可能会在应届生校招时发挥较大作用,在工作中如果你的本职工作是Java Web 开发的话,这一块涉猎的几率还是比较低。不过一旦你接触到了模型设计、中间件、高效存储、查询等内容这些也是绕不过的坎。

Java基础

Java基础则是走向Java高级的必经之路。

实际工作中高频次的东西有以下几点

基本容器

IO、NIO

常见的设计模式

Java多线程

良好的单测习惯

多线程并发内容

有了扎实的基础之后就要了解多线程、并发相关的内容了。

会用了之后也要考虑为啥多线程会出现的问题,这时就需要理解内存模型、可见性之类的知识点。同样的解决方式又有哪些?各自的优缺点也需要掌握。

JVM虚拟机

想要深入Java ,JVM是不可或缺的。对于大部分工作13年的开发者来说直接接触这一些内容是比较少的,到了35 年这个阶段就必须得了解了。

JVM内存划分,知道哪块内存存放哪些内容;线程安全与否;内存不够怎么处理等

不同情况的内存溢出、栈溢出,以及定位解决方案

分代的垃圾回收策略。

线上问题定位及相关解决方案

一个类的加载、创建对象、垃圾回收、类卸载的整个过程

以上问题都是我们需要掌握的

数据库

做WEB应用开发的老哥肯定要和数据库打不少交道,而且通常来说一个系统最先出现瓶颈往往都是数据库,说数据库是压到系统的最后—根稻草—点也不为过。

所以对数据库的掌握也是非常重要。以mysql数据库为例,这三点必须知道:

索引的数据结构及原理、哪些字段应当创建索引

针对于一个慢SQL的优化思路

数据库水平垂直拆分的方案,需要了解业界常用的MyCAT、sharding-sphere等中间件

分布式技术

随着互联网的发展,传统的单体应用越来越不适合现有场景。因此分布式技术出现了,这块涵盖的内容也很多很广,至少一些像CAP定理什么的这些基本理论还是要知道。

最后当然就是要懂一点架构了

相信程序员都有一个架构师的梦想。

要成为一个架构师,就上面列举的样样需要掌握,底层到操作系统、算法;上层到应用、框架都需要非常精通。(PPT架构师除外)

以上所说,仅供参考。

接下来给大家分享面试经验以来碰到过的高频面试题,希望对大家有所帮助(附答案,可分享)

Java多线程与并发编程(JMM、HashMap)

1.并行和并发有什么区别?

2.线程和进程的区别?

3.守护线程是什么?

4.创建线程有哪几种方式?

5.说一下runnable 和callable有什么区别?

6.线程有哪些状态?

7.sleep() 和wait() 有什么区别?

8.notify()和notifyAll()有什么区别?

9.线程的 run() 和start() 有什么区别?

10.创建线程池有哪几种方式?

11.线程池中submit() 和execute() 方法有什么区别?

12.在Java程序中怎么保证多线程的运行安全?

13.多线程中synchronized锁升级的原理是什么?

Java微服务(Spring Boot、Spring Cloud)

Spring Boot

1.什么是 Spring Boot?

2.Spring Boot 有哪些优点?

3.什么是 JavaConfig?

4.如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?

5.Spring Boot 中的监视器是什么?

6.如何在 Spring Boot 中禁用 Actuator 端点安全性?

7.如何在自定义端口上运行 Spring Boot 应用程序?

8.什么是 YAML?

9.如何实现 Spring Boot 应用程序的安全性?

Spring Cloud

1.什么是Spring Cloud?

2.使用Spring Cloud有什么优势?

3.服务注册和发现是什么意思?Spring Cloud 如何实现?

4.负载平衡的意义什么?

5.什么是Hystrix?它如何实现容错?

6.什么是 Hystrix断路器?我们需要它吗?

7.什么是Netflix Feign?它的优点是什么?

中间件(RabbitMQ、Zookeeper、Kafka、Dubbo、Netty)

Zookeeper

1.什么是Zookeeper?

2.Zookeeper如何保证了分布式一致性特性?

3.Zookeeper文件系统

4.ZooKeeper提供了什么?

5.四种类型的数据节点Znode

6.Zookeeper Watcher机制 – 数据变更通知

7.Zookeeper下Server工作状态

8.zookeeper是如何保证事务的顺序一致性的?

RabbitMQ

1.什么是rabbitmq?

2.为什么要使用rabbitmq?

3.使用rabbitmq的场景?

4.如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?

5.如何避免消息重复投递或重复消费?

6.消息基于什么传输?

Kafka

1.Kafka是什么?

2.partition的数据文件(offffset, MessageSize, data)

3.数据文件分段segment(顺序读写、分段命令、二分查找)

4.负载均衡(partition 会均衡分布到不同 broker 上)

5.批量发送

6.压缩(GZIP 或 Snappy)

7.消费者设计

8.Consumer Group

9.如何获取topic主题的列表?

10.生产者和消费者的命令行是什么?

Dubbo

1.为什么要用Dubbo?

2.Dubbo的整体架构设计有哪些分层?

3.默认使用的是什么通信框架,还有别的选择吗?

4.一般使用什么注册中心?还有别的选择吗?

5.默认使用什么序列化框架,你知道的还有哪些?

6.服务提供者能实现失效提出是什么原理?

7.服务上线怎么不影响旧版本?

8.Dubbo推荐用什么协议?

9.同一个服务多个注册的情况下可以直连某一个服务吗?

10.Dubbo集群容错有几种方案?

数据库(MySQL、Redis、MongoDB)

MySQL面试题

1、MySQL中有哪几种锁?

2、MySQL中有哪些不同的表格?

3、简述在MySQL数据库中MyISAM和InnoDB的区别

4、MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?

5、CHAR和VARCHAR的区别?

6、LIKE声明中的%和_是什么意思?

答:%对应于0个或更多字符,_只是LIKE 语句中的一个字符。

7、MySQL支持事务吗?

**答:**在缺省模式下,MySQL是autocommit 模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,MySQL是不支持事务的。

但是如果你的MySQL表类型是使用InnoDB Tables 或 BDB tables 的话,你的MySQL就可以使用事务处理,使用SETAUTOCOMMIT=0 就可以使 MySQL允许在 autocommit 模式,在非autocommit 模式下,你必须使用COMMIT 来提交你的更改,或者用ROLLBACK来回滚你的更改。

Redis

1.RDB和AOF区别。

2.为什么RDB要fork子进程而不是线程。

3.redis基本数据类型。

4.zset的底层数据结构,跳表何时增加高度。

5.分布式redis,缓存和数据库读写不一致,答延迟双删。

6.面试官让随便讲讲Redis,所以还说了缓存穿透,击穿,雪崩以及处理方法。

7.Redis相比memcached有哪些优势?

8.Redis主要消耗什么物理资源?

9.Redis有哪几种数据淘汰策略?

10.Redis官方为什么不提供Windows版本?

性能调优(SQL、nginx、Tomcat)

MySQL

1.SQL优化

2.简单说一说drop、delete与truncate的区别

3.什么是视图?

4.什么是内联接、左外联接、右外联接?

5.并发事务带来哪些问题?

6.事务隔离级别有哪些?MySQL的默认隔离级别是?

7.大表如何优化?

8.存储过程(特定功能的SQL语句集)

9.大表如何优化?

Nginx

1.什么是Nginx?

2.请列举Nginx的一些特性

3.请列举Nginx和Apache 之间的不同点

4.请解释Nginx如何处理HTTP请求

5.在Nginx中,如何使用未定义的服务器名称来阻止处理请求?

Tomcat

1、Tomcat的缺省端口是多少,怎么修改?

2、tomcat 有哪几种Connector 运行模式(优化)?

3、Tomcat有几种部署方式?

4、tomcat容器是如何创建servlet类实例?用到了什么原理?

5.tomcat如何优化?

6.内存调优

7.垃圾回收策略调优

7.共享session处理

8.添加JMS远程监控

9.专业点的分析工具有

10.关于Tomcat的session数目

俗话说:种一棵树,最好的时间是十年前,其次是现在。如果你现在还不是技术大牛,就不应该停止学习,至少在这个技术不断更新的时代,不会让后浪拍的太惨,前段时间我在腾讯工作的老哥私下传我一份他们内部的程序员全栈知识点进阶笔记,里面的内容真的非常全面,市面上很少会见到这么全的笔记,差距不止一点点。

总结

考虑篇幅,就着重挑了一些常见的重要的面试题展示出来了。
所有的面试题目都不是一成不变的,上面的面试题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。

全套的Java面试宝典手册,**“性能调优+微服务架构+并发编程+开源框架+分布式”**等七大面试专栏,包含Tomcat、JVM、MySQL、SpringCloud、SpringBoot、Dubbo、并发、Spring、SpringMVC、MyBatis、Zookeeper、Ngnix、Kafka、MQ、Redis、MongoDB、memcached等等。如果你对这个感兴趣,小编可免费分享。

资料获取方式:关注公众号【程序媛小琬】即可获取。【面试题】获取上述资料~
重要的事情说三遍,转发+转发+转发,一定要记得转发哦!!!

以上是关于我把Java岗面试问烂了的题目总结了一下,终于找到一份实习工作!的主要内容,如果未能解决你的问题,请参考以下文章

我把面试问烂了的⭐Java异常面试题⭐总结了一下(带答案,万字总结,精心打磨,建议收藏)

我把面试问烂了的⭐Spring面试题⭐总结了一下(带答案,万字总结,精心打磨,建议收藏)

面了6家大厂,我把问烂了的MySQL常见面试题总结了一下(带答案,万字总结,精心打磨,建议收藏)

耗时一个月,我把问烂了的网络安全2023年必考面试题总结了一下

面了6家大厂,我把问烂了的《Java八股文》打造成3个PDF。共1700页

面了6家大厂,我把问烂了的《Java八股文》打造成3个PDF。共1700页!!