做Java开发7年,今年9个月时间圆梦饿了么P7
前言
工作拧螺丝,面试造火箭。我想这是每个程序员比较头疼的事情吧!但是,又必须要经历一个面试流程,尤其是摸不清面试官问的问题,导致面试的时候不知道如何回答。
本文是工作7年Java程序员从几十次面试中挑选出来的面试几率比较大的一些题目,保证都是大家被问过的(就是这么自信),希望对大家找工作有所帮助。
下面的面试题只是我整理出来的一小部分常问的题目,另外本人整理并收藏了20年多家公司面试题知识点合集,以及各种Java核心知识点可以免费分享给大家,下方只是部分资料图展示。
需要的朋友可以点击传送门获取Java面试题资料:https://shimo.im/docs/QyJrRJVRdpptDYgk/
一、JVM系列面试题
1、堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
答:JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,
class 类信息常量池(static 常量和 static 变量)等放在方法区
new:①方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字节码)等数据
②堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配
③栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变量表存放的是 8 大基础类型加上一个应用类型,所以还是一个指向地址指针
④ 本地方法栈:主要为 Native 方法服务
⑤ 程序计数器:记录当前线程执行的行号
2、GC 的两种判定方法:
3、SafePoint 是什么
4、GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
5、Minor GC 与 Full GC 分别在什么时候发生?
6、JVM 内存分哪几个区,每个区的作用是什么?
7、 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
二、Redis系列面试题
1、Redis 与 memcached 相比有哪些优势?
2、Redis 支持哪几种数据类型?
3、Redis 有哪几种数据淘汰策略?
4、为什么 Redis 需要把所有数据放到内存中?
5、Redis 集群方案什么情况下会导致整个集群不可用?
6、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点 数据?
7、Redis 和 Redisson 有什么关系?
三、 Mysql系列面试题
1、Mysql 的技术特点是什么?
2、在 Mysql 中 ENUM 的用法是什么?
3、与 Oracle 相比,Mysql 有什么优势?
4、列的字符串类型可以是什么?
5、请简洁描述 Mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
6、LIKE 声明中的%和_是什么意思?
7、MyISAM 表格将在哪里存储,并且还提供其存储格式?
四、Netty系列面试题
1、BIO、NIO 和 AIO 的区别?
答:BIO:一个连接一个线程,客户端有连接请求时服务器端就 需要启动一个线程进行处理。线程开销大。
伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。
NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用
器轮询到连接有 I/O 请求时才启动一个线程进行处理。
AIO:一个有效请求一个线程,客户端的 I/O 请求都是由 OS 先完成了再通知服务器应用去启动线程进行处理,BIO 是面向流的,NIO 是面向缓冲区的;BIO 的各种流是阻塞的。而 NIO 是非阻塞的;BIO的 Stream 是单向的,而 NIO 的 channel 是双向的。
NIO 的特点:事件驱动模型、单线程处理多任务、非阻塞 I/O,I/O 读写不再阻塞,而是返回 0、基于 block 的传输比基于流的传输更高效、更高级的 IO 函数 zero-copy、IO 多路复用大大提高了 Java 网络应用的可伸缩性和实用性。基于 Reactor 线程模型。
在 Reactor 模式中,事件分发器等待某个事件或者可应用或个操作的状态发生,事件分发器就把这个事件传给事先注册的事件处理函数或者回调函数,由后者来做实际的读写操作。如在 Reactor 中实现读:注册读就绪事件和相应的事件处理器、事件分发器等待事件、事件到来,激活分发器,分发器调用事件对应的处理器、事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返还控制权。
2、TCP 粘包/拆包的原因及解决方法?
3、了解哪几种序列化协议?
4、如何选择序列化协议?
5、Netty 的零拷贝实现?
6、.Netty 的高性能表现在哪些方面?
五、SQL优化系列面试题
1、Mysql 的技术特点是什么?
答:Mysql 数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程 SQL 服务器、不同的后端、广泛的应用程序编程接口和管理工具。
2、Heap 表是什么?
3、Mysql 服务器默认端口是什么?
4、与 Oracle 相比,Mysql 有什么优势?
5、区分 CHAR_LENGTH 和 LENGTH?
6、Mysql 中使用什么存储引擎?
六、Duddo系列面试题
1、Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
2、dubbo 服务负载均衡策略?
3、Dubbo 在安全机制方面是如何解决的
4、dubbo 连接注册中心和直连的区别
5、dubbo 服务集群配置(集群容错模式)
6、dubbo 通信协议 dubbo 协议为什么要消费者比提供者个数多:
7、dubbo 通信协议 dubbo 协议适用范围和适用场景
七、设计模式系列面试题
1、请列举出在 JDK 中几个常用的设计模式?
答:单例模式(Singleton pattern)用于 Runtime,Calendar 和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如Boolean,像 Boolean.valueOf,观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decoratordesign pattern)被用于多个 Java IO 类中。
2、什么是设计模式?你是否在你的代码里面使用过任何设计模式?
3、Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
4、在 Java 中,什么叫观察者设计模式(observer design pattern)?
5、使用工厂模式最主要的好处是什么?在哪里使用?
6、举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?
7、举例说明什么情况下会更倾向于使用抽象类而不是接口?
总结
针对以上面试题,我总结出了互联网公司Java程序员面试中,涉及到的绝大部分面试题(附答案详解)。编成了文档和PDF格式的资料,免费分享给大家。包括 Dubbo、Redis、Netty、Zookeeper、Spring Cloud、分布式、高并发等架构技术点核心资料),希望能帮助到您面试前的复习并且能找到一个心仪的工作。同时,也节省大家去网上搜索资料浪费的时间来学习,也可以关注我哟以后还会有更多干货分享哒~
说到这里,想必大家都蠢蠢欲动了吧,由于文章字数原因,完整资料不能全部上传,需要资料的朋友可以点击传送门获取Java面试题资料:https://shimo.im/docs/QyJrRJVRdpptDYgk/
做Java开发7年,今年9个月时间圆梦饿了么P7的更多相关文章
- 所有做java开发的都是些垃圾
所有做java开发的都是些垃圾,再垃圾的框架,只要有人用,对java程序员来说那就是高性能,高可用,解耦的,非常优秀的一款框架.属于吃屎都吃的津津有味.java里的框架都是垃圾,连一个不错的都没有.比 ...
- java突破------一撸到底(做Java开发,遇到瓶颈是保持现状还是寻求突破?)
java突破------一撸到底(做Java开发,遇到瓶颈是保持现状还是寻求突破?) 很多人做Java开发2.3年之后,都会觉得自己遇到了瓶颈.什么都会又什么都不会,如何改变困境,为什么很多人写了7. ...
- 使用Eclipse-Maven-git做Java开发(3)--Eclipse的安装和配
使用Eclipse-Maven-git做Java开发(3)--Eclipse的安装和配 https://my.oschina.net/songxinqiang/blog/474530
- 大学同学做Java开发比我多5K,八年老Android只会crud该转Java吗?
最近在网上看到这样一个帖子: 做了八年Android开发,感觉这块做着也挺没意思,日常工作就是做一些架构优化,质量数据监控,改一改构建脚本,最主要的是业务负责人没有一个是做客户端的,都是后端的人. 最 ...
- 转载:做Java开发这一年 (火龙果软件)
转载:http://www.uml.org.cn/success/201410205.asp 从去年到现在,从.NET转向Java开发(只是因为项目原因,绝对与平台好坏没有关系)差不多有一年的时间了. ...
- 一个老牌程序员说:做Java开发,怎么可以不会这 20 种类库和 API
- 为什么做java开发的公司需要那么多程序员?
注:文章转载自知乎 透过现象看本质. Java是企业应用市场的王者,如果一家非互联网公司用Java,那么十有八九是做企业应用的. 所以,这个问题本质上是:为什么做企业应用的公司需要那么多Java程序员 ...
- 做JAVA开发的同学一定遇到过的爆表问题,看这里解决
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由净地发表于云+社区专栏 记一次Java线上服务器CPU过载问题的排查过程,详解排查过程中用到的Java性能监测工具:jvisualvm ...
- 这份SpringMVC执行原理笔记,建议做java开发的好好看看,总结的很详细!
什么是SpringMVC? Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供的web模块,包含了开发Web 应用程 ...
随机推荐
- 灵感来袭,基于Redis的分布式延迟队列(续)
背景 上一篇(灵感来袭,基于Redis的分布式延迟队列)讲述了基于Java DelayQueue和Redis实现了分布式延迟队列,这种方案实现比较简单,应用于延迟小,消息量不大的场景是没问题的,毕竟J ...
- 给子元素设置margin-top无效果的一种解决方法
在写一个登陆界面的时候,设置登录按钮的margin-top时出了问题 先是这么写的 <div style="margin-top:30px"> <a style= ...
- 深入浅出学Java-HashMap
一.概要 HashMap在JDK1.8之前的实现方式 数组+链表,但是在JDK1.8后对HashMap进行了底层优化,改为了由 数组+链表+红黑树实现,主要的目的是提高查找效率. 如下图所示: JDK ...
- linux c 多线程开发
在开发多线程程序时,当创建的线程数量特别多的时候,就会遇到线程数量的瓶颈. 多线程设置 设置内核参数 kernel.threads-max kernel.threads-max 是 linux 系统允 ...
- 换掉7z-zip默认的ico图标,自定义压缩文件图标更美观。
下图就是7z官网源代码里面的ico文件,如果有条件自己编译,可以直接替换下面的图标,然后编译一个你自己的7z工具就行.不过我比较懒,还是通过修改注册表的方式改成别的ico图标吧. 源码和可执行程序下载 ...
- 【图论】USACO11JAN Roads and Planes G
题目内容 洛谷链接 Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到\(T\)个城镇 (\(1 <= T <= 25,000\)),编号为\(1\)到\ ...
- Java改写重构第2版第一个示例
写在前面 <重构:改善既有代码的设计>是一本经典的软件工程必读书籍.作者马丁·福勒强调重构技术是以微小的步伐修改程序. 但是,从国内的情况来而论,"重构"的概念表里分离 ...
- spring cloud:搭建基于consul的服务提供者集群(spring cloud hoxton sr8 / spring boot 2.3.4)
一,搭建基于consul的服务提供者集群 1,consul集群,共3个实例: 2, 服务提供者集群:共2个实例: 3,服务消费者:一个实例即可 4,consul集群的搭建,请参考: https://w ...
- linux 压缩命令 zip
1.zip命令 例如:zip -r mysql.zip mysql 该句命令的含义是:将mysql文件夹压缩成mysql.zip zip -r abcdef.zip abc def.txt 这句命令的 ...
- scrapy数据写入管道
1 setting里面启动管道 ITEM_PIPELINES = { 'ganji.pipelines.GanjiPipeline': 300,}2 拿到的数据通过yield返回给管道 # -*- c ...