java面试设计
2022-11-02 17:16:43 0 举报
AI智能生成
java面试题库整理
作者其他创作
大纲/内容
技术
Java
Java基础
基础语法
final finally finalize关键字区别?
面向对象
集合
hashmap
List 和 Set 的区别?
HashSet 是如何保证不重复的?
HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程
环境下不安全)?
HashMap 的扩容过程?
编程方式
函数式编程
流式编程
远程通讯
java远程通讯有哪些方法?
RMI(Remote Method Invocation)
JMS(Java Message Service)
webservice
并发编程
JUC类的问题
JVM
JVM内存结构
JMM内存模型
jmm内存模型与jvm内存结构
int a =1, int b = 2, int c = a+b在虚拟机中的存储形式?
1
Young区对象什么时候转移到Old区?
类加载的双亲委派模型是什么?
线上接口请求过慢怎么排查?
1
浏览器请求慢怎么排查?
对象的四种引用?
GC相关
GC算法有哪些?
1
JVM内存泄露如何分析?
1
2分析工具
GC回收为什么要STW?
1
每秒几十万并发的秒杀系统为什么会频繁发生GC?
GC roots的对象有哪些?
虚拟机栈
静态变量
常量
native方法
GC 串行回收器、并行回收器和并发回收器有什么区别?
GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
Minor GC 与 Full GC 分别在什么时候发生?
JVM频繁Full GC怎么办?
JVM调优
日均百万级交易系统如何优化JVM?
内存泄露如何查原因?
1
JVM参数有哪些?
SPI
Java并发
并发相关
JUC的问题
synchronized与Lock的区别
volatile和synchronized区别
Java NIO的几个核心组成部分是什么?作用分别是什么?
spring
spring核心
解释一下IOC?
Spring的AOP?
Spring事务?
Spring循环依赖问题?
Springboot
Springboot启动过程?
reactive
Mybatis
参考资料
MyBatis常见面试问题
参考资料
Java八股文
Java路线图
Java架构-之冷知识
中间件
netty
常见面试题
netty高性能的原因?
1.主从Reactor线程模型
2.NIO多路复用非阻塞
3.无锁串行化设计思想
4.支持高性能序列化协议
5.零拷贝
6.ByteBuf内存池设计
7.灵活的TCP参数配置
8.并发优化
1.为什么选netty而不用JDK NIO?
Netty为什么选NIO而不是AIO?
BIO、NIO、AIO详解
为什么需要netty?
2.同类框架,为什么选netty?
Sun Grizzly/Cindy/Jetty/Apple SwiftNIO/ACE/Apache Mina对比
3.粘包和半包问题?
4.编解码
5.keepalive与idle监测
6.netty的锁
7.netty的内存使用
8.netty对reactor的支持
Dubbo(54题)
Dubbo 是什么?
Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提
供服务自动注册、自动发现等高效服务治理方案, 可以和
Spring 框架无缝集成。
Dubbo 的主要应用场景?
透明化的远程方法调用,就像调用本地方法一样调用远程方法,
只需简单配置,没有任何 API 侵入。
软负载均衡及容错机制,可在内网替代 F5 等硬件负载均衡器,
降低成本,减少单点。
服务自动注册与发现,不再需要写死服务提供方地址,注册中心
基于接口名查询服务提供者的 IP 地址,并且能够平滑添加或删
除服务提供者。
只需简单配置,没有任何 API 侵入。
软负载均衡及容错机制,可在内网替代 F5 等硬件负载均衡器,
降低成本,减少单点。
服务自动注册与发现,不再需要写死服务提供方地址,注册中心
基于接口名查询服务提供者的 IP 地址,并且能够平滑添加或删
除服务提供者。
Dubbo 的核心功能?
3 个核心功能
Remoting
网络通信框架,提供对多种 NIO 框架抽象封装,包括
“同步转异步”和“请求-响应”模式的信息交换方式。
Cluster
提供基于接口方法的透明远程过程调用,包括多
协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群
支持。
Registry
服务注册,基于注册中心目录服务,使服务消费方能动态
的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少
机器。
Dubbo 的核心组件?
1
Dubbo服务注册与发现的流程?
示意图
1
流程说明
Provider(提供者)绑定指定端口并启动服务
提供者连接注册中心,并发本机IP、端口、应用信息和提供服务信息发送至注册中心存储
Consumer(消费者),连接注册中心,并发送应用信息、所求服务信息至注册中心
注册中心根据消费者所求服务信息匹配对应的提供者列表发送至Consumer应用缓存。
Consumer在发起远程调用时基于缓存的消费者列表择其一发起调用。
Provider状态变更会实时通知注册中心、在由注册中心实时推送至Consumer。
设计原因
Consumer与Provider解偶,双方都可以横向增减节点数。
注册中心可集群化,自动容错。
去中心化。注册中心宕机,短时间可依赖本地缓存继续服务调用。
服务提供者无状态,任意一台宕掉后,不影响使用。
Dubbo的架构设计?
架构图
1
各层说明
图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。
图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。
图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类。
图中蓝色虚线为初始化过程,即启动时组装链,红色实线为方法调用过程,即运行时调时链,紫色三角箭头为继承,可以把子类看作父类的同一个节点,线上的文字为调用的方法。
图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。
图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类。
图中蓝色虚线为初始化过程,即启动时组装链,红色实线为方法调用过程,即运行时调时链,紫色三角箭头为继承,可以把子类看作父类的同一个节点,线上的文字为调用的方法。
关系说明
在 RPC 中,Protocol 是核心层,也就是只要有 Protocol + Invoker + Exporter 就可以完成非透明的 RPC 调用,然后在 Invoker 的主过程上 Filter 拦截点。
图中的 Consumer 和 Provider 是抽象概念,只是想让看图者更直观的了解哪些类分属于客户端与服务器端,不用 Client 和 Server 的原因是 Dubbo 在很多场景下都使用 Provider, Consumer, Registry, Monitor 划分逻辑拓扑节点,保持统一概念。
而 Cluster 是外围概念,所以 Cluster 的目的是将多个 Invoker 伪装成一个 Invoker,这样其它人只要关注 Protocol 层 Invoker 即可,加上 Cluster 或者去掉 Cluster 对其它层都不会造成影响,因为只有一个提供者时,是不需要 Cluster 的。
Proxy 层封装了所有接口的透明化代理,而在其它层都以 Invoker 为中心,只有到了暴露给用户使用时,才用 Proxy 将 Invoker 转成接口,或将接口实现转成 Invoker,也就是去掉 Proxy 层 RPC 是可以 Run 的,只是不那么透明,不那么看起来像调本地服务一样调远程服务。
而 Remoting 实现是 Dubbo 协议的实现,如果你选择 RMI 协议,整个 Remoting 都不会用上,Remoting 内部再划为 Transport 传输层和 Exchange 信息交换层,Transport 层只负责单向消息传输,是对 Mina, Netty, Grizzly 的抽象,它也可以扩展 UDP 传输,而 Exchange 层是在传输层之上封装了 Request-Response 语义。
Registry 和 Monitor 实际上不算一层,而是一个独立的节点,只是为了全局概览,用层的方式画在一起。
Dubbo框架设计一共划分了10个层
服务接口层(Service)
该层是与实际业务逻辑相关的,根据服务提供方和服务消费方的业务设计对应的接口和实现。
配置层(Config)
对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类
服务代理层(Proxy)
服务接口透明代理,生成服务的客户端 Stub 和服务器端 Skeleton, 以 ServiceProxy 为中心,扩展接口为 ProxyFactory
服务注册层(Registry)
封装服务地址的注册与发现,以服务 URL 为中心,扩展接口为 RegistryFactory, Registry, RegistryService
集群层(Cluster)
封装多个提供者的路由及负载均衡,并桥接注册中心,以 Invoker 为中心,扩展接口为 Cluster, Directory, Router, LoadBalance
监控层(Monitor)
RPC 调用次数和调用时间监控,以 Statistics 为中心,扩展接口为 MonitorFactory, Monitor, MonitorService
远程调用层(Protocol)
封装 RPC 调用,以 Invocation, Result 为中心,扩展接口为 Protocol, Invoker, Exporter
信息交换层(Exchange)
封装请求响应模式,同步转异步,以 Request, Response 为中心,扩展接口为 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServe
网络传输层(Transport)
抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel, Transporter, Client, Server, Codec
数据序列化层(Serialize)
可复用的一些工具,扩展接口为 Serialization, ObjectInput, ObjectOutput, ThreadPool
协议类问题
RMI 协议?
RMI 协议采用 JDK 标准的 java.rmi.*实现,采用阻塞式短连接和 JDK 标准序列
化方式,Java 标准的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:TCP
传输方式:同步传输
序列化:Java 标准二进制序列化
适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传
文件。
适用场景:常规远程服务方法调用,与原生 RMI 服务互操作
Hessian 协议?
Hessian 协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用
Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现
基于 Hessian 的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:Hessian 二进制序列化
适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较
大,可传文件。
适用场景:页面传输,文件传输,或与原生 hessian 服务互操作
Hessian 协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用
Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现
基于 Hessian 的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:Hessian 二进制序列化
适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较
大,可传文件。
适用场景:页面传输,文件传输,或与原生 hessian 服务互操作
http?
采用 Spring 的 HttpInvoker 实现
基于 http 表单的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:表单序列化(JSON)
适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览
器查看,可用表单或 URL 传入参数,暂不支持传文件。
适用场景:需同时给应用程序和浏览器 JS 使用的服务。
Webservice
基于 CXF 的 frontend-simple 和 transports-http 实现
基于 WebService 的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:SOAP 文本序列化
适用场景:系统集成,跨语言调用。
Thrif
Thrift 是 Facebook 捐给 Apache 的一个 RPC 框架,当前 dubbo 支持的 thrift
协议是对 thrift 原生协议的扩展,在原生协议的基础上添加了一些额外的头信
息,比如 service name,magic number 等
Triple 协议
Triple 是 Dubbo3 提出的基于 HTTP2 的开放协议,旨在解决 Dubbo2 私有协议带来的互通性问题。相比于原有 Dubbo2 协议,Triple 有以下优势:
1.原生和 gRPC 协议互通。打通 gRPC 生态,降低从 gRPC 至 Dubbo 的迁移成本。
2.增强多语言生态。避免因 CPP/C#/RUST 等语言的 Dubbo SDK 能力不足导致业务难以选型适配的问题。
3.网关友好。网关无需参与序列化,方便用户从传统的 HTTP 转泛化 Dubbo 调用网关升级至开源或云厂商的 Ingress 方案。
4.完善的异步和流式支持。带来从底层协议到上层业务的性能提升,易于构建全链路异步以及严格保证消息顺序的流式服务。
1.原生和 gRPC 协议互通。打通 gRPC 生态,降低从 gRPC 至 Dubbo 的迁移成本。
2.增强多语言生态。避免因 CPP/C#/RUST 等语言的 Dubbo SDK 能力不足导致业务难以选型适配的问题。
3.网关友好。网关无需参与序列化,方便用户从传统的 HTTP 转泛化 Dubbo 调用网关升级至开源或云厂商的 Ingress 方案。
4.完善的异步和流式支持。带来从底层协议到上层业务的性能提升,易于构建全链路异步以及严格保证消息顺序的流式服务。
Dubbo与Spring的关系?
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
Dubbo和SpringCloud的关系?
Dubbo是SOA时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。而SpringCloud诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了Spirng、SpirngBoot的优势之上,两个框架在开始目标就不一致,Dubbo定位服务治理、SpirngCloud是一个生态。
Dubbo和SpringCloud的区别?
图表
1
1、Dubbo 底层是使用Netty这样的NIO框架,使⽤的是 RPC 通信,⽽ Spring Cloud 使⽤的是 HTTP RESTFul ⽅式。
2、dubbo由于是以Hession序列化⼆进制的传输,占⽤带宽会更少(基于netty等);springCloud是http协议传输,带宽会⽐较多,同时
使⽤http协议(http+restful api)⼀般会使⽤JSON报⽂,消耗会更⼤。
3、dubbo的开发难度较⼤,原因是dubbo的jar包依赖(存在代码级别的强依赖)问题很多⼤型⼯程⽆法解决;
springcloud的接⼝协议约定⽐较⾃由且松散,需要有强有⼒的⾏政措施来限制接⼝⽆序升级。
4、dubbo的改进是通过dubbofilter,很多东⻄没有,需要⾃⼰继承,如监控,如⽇志,如限流,如追踪。
springcloud具有配置管理、服务发现、断路器、智能路由、微代理、控制总线、⼀次性token、全局锁、选主、分布式会
话和集群状态等,满⾜了构建微服务所需的所有解决⽅案。
2、dubbo由于是以Hession序列化⼆进制的传输,占⽤带宽会更少(基于netty等);springCloud是http协议传输,带宽会⽐较多,同时
使⽤http协议(http+restful api)⼀般会使⽤JSON报⽂,消耗会更⼤。
3、dubbo的开发难度较⼤,原因是dubbo的jar包依赖(存在代码级别的强依赖)问题很多⼤型⼯程⽆法解决;
springcloud的接⼝协议约定⽐较⾃由且松散,需要有强有⼒的⾏政措施来限制接⼝⽆序升级。
4、dubbo的改进是通过dubbofilter,很多东⻄没有,需要⾃⼰继承,如监控,如⽇志,如限流,如追踪。
springcloud具有配置管理、服务发现、断路器、智能路由、微代理、控制总线、⼀次性token、全局锁、选主、分布式会
话和集群状态等,满⾜了构建微服务所需的所有解决⽅案。
你还了解别的分布式框架吗?
别的还有 Spring cloud、Facebook 的 Thrift、Twitter 的 Finagle 等。
Dubbo 能集成 Spring Boot 吗?
可以的,项⽬地址如下。
https://github.com/apache/incubator-dubbo-spring-boot-project
Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
可以通信的,启动 dubbo 时,消费者会从 zk 拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本
地存储的地址进行调用
挂掉是不要紧的,但前提是你没有增加新的服务,如果你要调用新的服务,则是不能办到的。
1. 注册中⼼对等集群,任意⼀台宕掉后,会⾃动切换到另⼀台
2. 注册中⼼全部宕掉,服务提供者和消费者仍可以通过本地缓存通讯
3. 服务提供者⽆状态,任⼀台 宕机后,不影响使⽤
4. 服务提供者全部宕机,服务消费者会⽆法使⽤,并⽆限次重连等待服务者恢复
Dubbo可以对结果进⾏缓存吗?
可以,Dubbo 提供了声明式缓存,⽤于加速热⻔数据的访问速度,以减少⽤户加缓存的⼯作量。
dubbo 服务负载均衡策略?
Random LoadBalance
随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比
较均匀,有利于动态调整提供者权重。(权重可以在 dubbo 管控台配置)
较均匀,有利于动态调整提供者权重。(权重可以在 dubbo 管控台配置)
RoundRobin LoadBalance
轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调
到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
LeastActive LoadBalance
最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的
调用前后计数差会越大。
ConsistentHash LoadBalance
一致性 Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节
点,平摊到其它提供者,不会引起剧烈变动。
点,平摊到其它提供者,不会引起剧烈变动。
缺省只对第一个参数 Hash,如果要修改,请配置
<dubbo:parameter key="hash.arguments" value="0,1" />
缺省用 160 份虚拟节点,如果要修改,请配置
<dubbo:parameter key="hash.nodes" value="320" />
Dubbo 在安全机制方面是如何解决的?
Dubbo 通过 Token 令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo 还提供服务黑白名单,来控
制服务所允许的调用方。
dubbo 连接注册中心和直连的区别?
最常用的dubbo性能调优点?
1
dubbo配置的优先级顺序?
1.consumer的method配置
2.provider的method配置
3.consumer的reference配置
4.provider的service配置
5.consumer的consumer节点配置
6.provider的provider节点配置
方法级的配置优先级高于接口级,consumer的优先级高于provider。
2.provider的method配置
3.consumer的reference配置
4.provider的service配置
5.consumer的consumer节点配置
6.provider的provider节点配置
方法级的配置优先级高于接口级,consumer的优先级高于provider。
. dubbo 服务集群配置(集群容错模式)9种
Failover Cluster(默认)
失败自动切换,当出现失败,重试其它服务器。(缺省)通常用于读操作,
但重试会带来更长延迟。可通过 retries="2"来设置重试次数(不含第一次)。
<dubbo:service retries="2" cluster="failover"/>
或:
<dubbo:reference retries="2" cluster="failover"/>
cluster="failover"可以不用写,因为默认就是 failover
Failfast Cluster
快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,
比如新增记录。
<dubbo:service cluster="failfast" />
或:
<dubbo:reference cluster="failfast" />
cluster="failfast"和 把 cluster="failover"、retries="0"是一样的效果,retries="0"就是不重试
或:
<dubbo:reference cluster="failfast" />
cluster="failfast"和 把 cluster="failover"、retries="0"是一样的效果,retries="0"就是不重试
Failsafe Cluster
失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
<dubbo:service cluster="failsafe" />
或:
<dubbo:reference cluster="failsafe" />
Failback Cluster
失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
<dubbo:service cluster="failback" />
或:
<dubbo:reference cluster="failback" />
Forking Cluster
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读
操作,但需要浪费更多服务资源。可通过 forks="2"来设置最大并行数。
<dubbo:service cluster=“forking" forks="2"/>
或:
<dubbo:reference cluster=“forking" forks="2"/>
Broadcast Cluster
广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。
v2.1.0开始支持
Available Cluster
调用目前可用的实例(只调用一个),如果当前没有可用的实例,则抛出异常。通常用于不需要负载均衡的场景。
Mergeable Cluster
将集群中的调用结果聚合起来返回结果,通常和group一起配合使用。通过分组对结果进行聚合并返回聚合后的结果,比如菜单服务,用group区分同一接口的多种实现,现在消费方需从每种group中调用一次并返回结果,对结果进行合并之后返回,这样就可以实现聚合菜单项。
ZoneAware Cluster
多注册中心订阅的场景,注册中心集群间的负载均衡。
对于多注册中心间的选址策略有如下四种
指定优先级:preferred="true"注册中心的地址将被优先选择
<dubbo:registry address="zookeeper://127.0.0.1:2181" preferred="true" />
同中心优先:检查当前请求所属的区域,优先选择具有相同区域的注册中心
<dubbo:registry address="zookeeper://127.0.0.1:2181" zone="beijing" />
权重轮询:根据每个注册中心的权重分配流量
<dubbo:registry id="beijing" address="zookeeper://127.0.0.1:2181" weight="100" />
<dubbo:registry id="shanghai" address="zookeeper://127.0.0.1:2182" weight="10" />
缺省值:选择一个可用的注册中心
Dubbo使用的是什么通信框架?
默认使用NIO Netty框架也是推荐的选择,另外还集成有Mina、Grizzly。
dubbo 通信协议 dubbo 协议为什么要消费者比提供者个数多?
因 dubbo 协议采用单一长连接,假设网络为千兆网卡(1024Mbit=128MByte),
根据测试经验数据每条连接最多只能压满 7MByte(不同的环境可能不一样,供参考),理论上 1 个服务提供者需要 20
个服务消费者才能压满网卡。
dubbo 通信协议 dubbo 协议为什么不能传大包?
因 dubbo 协议采用单一长连接,
如果每次请求的数据包大小为 500KByte,假设网络为千兆网卡(1024Mbit=128MByte),每条连接最大 7MByte(不同的
环境可能不一样,供参考),
单个服务提供者的 TPS(每秒处理事务数)最大为:128MByte / 500KByte = 262。
单个消费者调用单个服务提供者的 TPS(每秒处理事务数)最大为:7MByte / 500KByte = 14。
如果能接受,可以考虑使用,否则网络将成为瓶颈。
dubbo 通信协议 dubbo 协议为什么采用异步单一长连接?
因为服务的现状大都是服务提供者少,通常只有几台机器,
而服务的消费者多,可能整个网站都在访问该服务,
比如 Morgan 的提供者只有 6 台提供者,却有上百台消费者,每天有 1.5 亿次调用,
如果采用常规的 hessian 服务,服务提供者很容易就被压跨,
通过单一连接,保证单一消费者不会压死提供者,
长连接,减少连接握手验证等,
并使用异步 IO,复用线程池,防止 C10K 问题。
dubbo 通信协议 dubbo 协议适用范围和适用场景?
适用范围:传入传出参数数据包较小(建议小于 100K),消费者比提供者个数
多,单一消费者无法压满提供者,尽量不要用 dubbo 协议传输大文件或超大字
符串。
适用场景:常规远程服务方法调用
dubbo 协议补充:
连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO 异步传输
序列化:Hessian 二进制序列化
Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
dubbo: 单一长连接和 NIO 异步通讯,适合大并发小数据量的服务调用,
以及消费者远大于提供者。传输协议 TCP,异步,Hessian 序列化;
rmi: 采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要实现
Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连接,传输数
据包大小混合,消费者和提供者个数差不多,可传文件,传输协议 TCP。
多个短连接,TCP 协议传输,同步传输,适用常规的远程服务调用和 rmi 互
操作。在依赖低版本的 Common-Collections 包,java 序列化存在安全漏
洞;
webservice: 基于 WebService 的远程调用协议,集成 CXF 实现,提供和
原生 WebService 的互操作。多个短连接,基于 HTTP 传输,同步传输,适
用系统集成和跨语言调用;
http: 基于 Http 表单提交的远程调用协议,使用 Spring 的 HttpInvoke 实
现。多个短连接,传输协议 HTTP,传入参数大小混合,提供者个数多于消
费者,需要给应用程序和浏览器 JS 调用;
hessian: 集成 Hessian 服务,基于 HTTP 通讯,采用 Servlet 暴露服务,
Dubbo 内嵌 Jetty 作为服务器时默认实现,提供与 Hession 服务互操作。多
个短连接,同步 HTTP 传输,Hessian 序列化,传入参数较大,提供者大于
消费者,提供者压力较大,可传文件;
memcache: 基于 memcached 实现的 RPC 协议
redis: 基于 redis 实现的 RPC 协议
以及消费者远大于提供者。传输协议 TCP,异步,Hessian 序列化;
rmi: 采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要实现
Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连接,传输数
据包大小混合,消费者和提供者个数差不多,可传文件,传输协议 TCP。
多个短连接,TCP 协议传输,同步传输,适用常规的远程服务调用和 rmi 互
操作。在依赖低版本的 Common-Collections 包,java 序列化存在安全漏
洞;
webservice: 基于 WebService 的远程调用协议,集成 CXF 实现,提供和
原生 WebService 的互操作。多个短连接,基于 HTTP 传输,同步传输,适
用系统集成和跨语言调用;
http: 基于 Http 表单提交的远程调用协议,使用 Spring 的 HttpInvoke 实
现。多个短连接,传输协议 HTTP,传入参数大小混合,提供者个数多于消
费者,需要给应用程序和浏览器 JS 调用;
hessian: 集成 Hessian 服务,基于 HTTP 通讯,采用 Servlet 暴露服务,
Dubbo 内嵌 Jetty 作为服务器时默认实现,提供与 Hession 服务互操作。多
个短连接,同步 HTTP 传输,Hessian 序列化,传入参数较大,提供者大于
消费者,提供者压力较大,可传文件;
memcache: 基于 memcached 实现的 RPC 协议
redis: 基于 redis 实现的 RPC 协议
dubbo://(推荐)
rmi://
hessian://
http://
webservice://
thrift://
memcached://
redis://
rest://
Dubbo⽀持服务多协议吗?
Dubbo 允许配置多协议,在不同服务上⽀持不同协议或者同⼀服务上同时⽀持多种协议。
Dubbo 超时时间怎样设置?
两种方式
服务提供者端设置超时时间,在 Dubbo 的用户文档中,推荐如果能在服务
端多配置就尽量多配置,因为服务提供者比消费者更清楚自己提供的服务特
性。
端多配置就尽量多配置,因为服务提供者比消费者更清楚自己提供的服务特
性。
服务消费者端设置超时时间,如果在消费者端设置了超时时间,以消费者端
为主,即优先级更高。因为服务调用方设置超时时间控制性更灵活。如果消
费方超时,服务端线程不会定制,会产生警告。
为主,即优先级更高。因为服务调用方设置超时时间控制性更灵活。如果消
费方超时,服务端线程不会定制,会产生警告。
服务调用超时问题怎么解决?
dubbo在调用服务不成功时,默认是会重试两次的。
Dubbo 有些哪些注册中心?
Multicast 注册中心: Multicast 注册中心不需要任何中心节点,只要广播地
址,就能进行服务注册和发现。基于网络中组播传输实现;
Zookeeper 注册中心: 基于分布式协调系统 Zookeeper 实现,采用
Zookeeper 的 watch 机制实现数据变更;
redis 注册中心: 基于 redis 实现,采用 key/Map 存储,住 key 存储服务名
和类型,Map 中 key 存储服务 URL,value 服务过期时间。基于 redis 的发
布/订阅模式通知数据变更;
Simple 注册中心
址,就能进行服务注册和发现。基于网络中组播传输实现;
Zookeeper 注册中心: 基于分布式协调系统 Zookeeper 实现,采用
Zookeeper 的 watch 机制实现数据变更;
redis 注册中心: 基于 redis 实现,采用 key/Map 存储,住 key 存储服务名
和类型,Map 中 key 存储服务 URL,value 服务过期时间。基于 redis 的发
布/订阅模式通知数据变更;
Simple 注册中心
为什么需要服务治理?
过多的服务URL配置困难
负载均衡分配节点压力过大的情况下也需要部署集群
服务依赖混乱,启动顺序不清晰
过多服务导致性能指标分析难度较大,需要监控
Dubbo支持哪些序列化方式?
默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。
Dubbo 停⽌维护了吗?
2014 年开始停⽌维护过⼏年,17 年开始重新维护,并进⼊了 Apache 项⽬。
Dubbo和Dubbox之间的区别?
Dubbox 是继 Dubbo 停⽌维护后,当当⽹基于 Dubbo 做的⼀个扩展项⽬,如加了服务可 Restful 调⽤,更新了开源组件等。
Dubbo需要 Web 容器吗?
不需要,如果硬要⽤ Web 容器,只会增加复杂性,也浪费资源。
Dubbo内置了哪⼏种服务容器?
Spring Container
Jetty Container
Log4j Container
Dubbo 的服务容器只是⼀个简单的 Main ⽅法,并加载⼀个简单的 Spring 容器,⽤于暴露服务。
Dubbo有哪⼏种配置⽅式?
Spring 配置⽅式
Java API 配置⽅式
Dubbo 核⼼的配置有哪些?
图表
1
在 Provider 上可以配置的 Consumer 端的属性有哪些?
timeout:⽅法调⽤超时
retries:失败重试次数,默认重试 2 次
loadbalance:负载均衡算法,默认随机
actives 消费者端,最⼤并发调⽤限制
Dubbo启动时如果依赖的服务不可⽤会怎样?
Dubbo 缺省会在启动时检查依赖的服务是否可⽤,不可⽤时会抛出异常,阻⽌ Spring 初始化完成,默认 check="true",可
以通过 check="false" 关闭检查。
当⼀个服务接⼝有多种实现时怎么做?
当⼀个接⼝有多种实现时,可以⽤ group 属性来分组,服务提供⽅和消费⽅都指定同⼀个 group 即可。
服务上线怎么兼容旧版本?
可以⽤版本号(version)过渡,多个不同版本的服务注册到注册中⼼,版本号不同的服务相互间不引⽤。这个和服务分组的
概念有⼀点类似。
Dubbo服务之间的调⽤是阻塞的吗?
默认是同步等待结果阻塞的,⽀持异步调⽤。
Dubbo 是基于 NIO 的⾮阻塞实现并⾏调⽤,客户端不需要启动多线程即可完成并⾏调⽤多个远程服务,相对多线程开销较
⼩,异步调⽤会返回⼀个 Future 对象。
Dubbo⽀持分布式事务吗?
v3,0支持。需要依赖seata
Dubbo⽀持服务降级吗?
Dubbo 2.2.0 以上版本⽀持。
Dubbo如何优雅停机?
Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使⽤ kill -9 PID 等强制关闭指令,是不会执⾏优雅停机
的,只有通过 kill PID 时,才会执⾏。
服务提供者能实现失效踢出是什么原理?
服务失效踢出基于 Zookeeper 的临时节点原理。 (服务机器会在zk上注册⼀个临时节点,服务失效则临时节点被删除)
如何解决服务调⽤链过⻓的问题?
Dubbo 可以使⽤ Pinpoint 和 Apache Skywalking(Incubator) 实现分布式服务追踪,当然还有其他很多⽅案。
Dubbo必须依赖的包有哪些?
Dubbo 必须依赖 JDK,其他为可选。
Dubbo的管理控制台能做什么?
管理控制台主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能。
说说 Dubbo 服务暴露的过程。
Dubbo 会在 Spring 实例化完 bean 之后,在刷新容器最后⼀步发布 ContextRefreshEvent 事件的时候,通知实现了
ApplicationListener 的 ServiceBean 类进⾏回调 onApplicationEvent 事件⽅法,Dubbo 会在这个⽅法中调⽤ ServiceBean ⽗类
ServiceConfig 的 export ⽅法,⽽该⽅法真正实现了服务的(异步或者⾮异步)发布。
在使⽤过程中都遇到了些什么问题?
单⼀⻓连接和NIO异步通讯,适合⼤并发⼩数据量的服务调⽤,以及消费者远⼤于提供者。Dubbo 的设计⽬的是为了满⾜⾼
并发⼩数据量的 rpc 调⽤,在⼤数据量下的性能表现并不好,建议使⽤ rmi 或 http 协议。
你读过 Dubbo 的源码吗?
要了解 Dubbo 就必须看其源码,了解其原理,花点时间看下吧,⽹上也有很多教程,后续有时间我也会在公众号上分享
Dubbo 的源码。
http://songwie.com/attached/dubbo/dubbo2.0.pdf
你觉得⽤ Dubbo 好还是 Spring Cloud 好?
扩展性的问题,没有好坏,只有适合不适合,不过我好像更倾向于使⽤ Dubbo, Spring Cloud 版本升级太快,组件更新替换
太频繁,配置太繁琐,还有很多我觉得是没有 Dubbo 顺⼿的地⽅……
HTTP与RPC的区别?
1
注册中心
Eureka注册中心原理
1
算法
红黑树
java链表是否有环?
1
java链表详解
1
链表常见算法题
1
1.反转一个单链表。
2.返回中间节点,有2个返回第二个中间的节点
3.输入一个链表,输出该链表中倒数第k个结点。
4.合并两个有序链表。
5.以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
6.在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
7.链表的回文结构
8.给定一个链表,判断链表中是否有环。
9. 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null
10. 输入两个链表,找出它们的第一个公共结点
数据结构
数据库
MySQL
1、索引数据结构红黑树,Hash,B+树能说下吗?
2、千万级数据表如何用索引快速查找?
3、如何基于索引B+树精准建立高性能索引?
4、联合索引底层数据结构又是怎样的?
5、覆盖索引与聚集索引到底是什么?
6、Mysql最左前缀优化原则是什么?
分库分表
分库分表的问题和思路
大厂分库分表方案
分库分表存在的问题
唯一ID的问题
雪花算法
跨库join的问题
通常的解决方案是分别查询不同库中不同的表,然后在service中聚合起来。
事务问题
TCC等
新老数据兼容的问题
在 MySQL 中 ENUM 的用法是什么?
1
MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
1
CHAR 和 VARCHAR 的区别?
1
主键和候选键有什么区别?
1
MySQL集群方案?
1
MySQL与Oracle的区别?
1
加了唯一索引,为什么还是产生重复数据?
1
缓存
redis
1、BIO,NIO,AIO的区别?
1
2、什么是阻塞IO以及非阻塞IO?
3、Reactor和Proactor IO设计模式是什么?
1
4、NIO底层select、poll和epoll实现的区别?
6、Redis、Netty、Tomcat的线程模型与NIO的联系是什么?
redis哨兵模式Springboot配置文件怎么配置
配置哨兵ip列表
缓存穿透、缓存击穿、缓存雪崩?
缓存穿透
查不存在的值
缓存空值
布隆过滤器
布隆过滤器原理?
缓存击穿
热点Key,失效瞬间并发查导致查数据库
热点数据设置永不过期
互斥锁或者队列
缓存雪崩
所有key过期时间相同,同时失效
事前
key均匀过期
分级缓存
热点数据永不过期
事中
互斥锁
熔断限流
事后
缓存恢复,事先要考虑好缓存恢复方案,必要时能尽快执行
持久化
redis如何处理并发问题?
Redis没有并发问题,是单进程的,所有写命令都是串行执行的。
Redis为什么这么快?
内存存储
Redis是使用内存(in-memeroy)存储,没有磁盘IO上的开销
单线程实现
Redis使用单个线程处理请求,避免了多个线程之间线程切换和锁资源争用的开销
非阻塞IO
Redis使用多路复用IO技术,在poll,epool,kqueue选择最优IO实现
优化的数据结构
Redis有诸多可以直接应用的优化数据结构的实现,应用层可以直接使用原生的数据结构提升性能
使用Redis集群,遇到数据一致性问题怎么解决?(Redis和数据库双写一致性)
高频问题
持久化
什么是持久化?
持久化就是数据写入磁盘,防止服务器宕机导致内存数据丢失。
Redis的持久化机制是什么?各有哪些优缺点?
RDB(Redis Database)
AOF(Append only file)
Redis持久化数据和缓存怎么做扩容和缩容?
1
内存
Redis的数据淘汰策略?
8种
noevction(不淘汰)
超出内存后报错
淘汰
在设置了过期时间的数据中淘汰
volatile-ttl
Time To Live
volatile-random
volatile-lru
volatile-lfu
在所有数据中淘汰
allkeys-random
allkeys-lru
allkeys-lfu
事务
为什么删除数据后,Redis内存占用依然很高?
架构
架构理论
CAP
拜占庭将军问题
架构设计三原则
合适原则,演化原则,简单原则
合适优于先进,演化优于一步到位,简单优于复杂
规模
规模带来的复杂度的主要原因是“量变引起质变”
安全
从技术角度分两类
1.功能上的安全,即代码实现层面
2.网络架构上的安全
防火墙
云服务商承受强大带宽的能力
低成本
各实现环节考虑成本控制问题
可扩展
两个基本条件
正确预测变化,完美封装变化。
预测变化复杂性
不可能每个设计点考虑可扩展性
不可能完全不考虑可扩展性
所有预测都存在出错的可能性
方案
方案一
“变化”封装在变化层,不变的封装在“稳定层”
问题
系统要拆分变化层和稳定层
需要设计变化层和稳定层之间的接口
方案二
提炼抽象层和实现层
抽象层稳定
实现层根据具体业务定制开发
实例有装饰者模式,策略模式等等
3H问题
高可用
高可用架构
独裁式
一主多备
主节点宕机,其中一个备份节点升级为主节点
协商式
一主多从
主节点宕机,其中一个从节点升级为主节点
从节点负责读
与主备架构的区别
mysql
民主式
集群分区
ZooKeeper
高可用分类
应用层
无状态设计。负载均衡,解决分布式Session问题
秒杀系统
服务层
本质是通过冗余来实现高可用。
手段
负载均衡
业务分级
超时重试
异步调用
缓存
缓存预热
冗余
无状态
故障转移
多地多活
过载保护
限流
算法
令牌桶
漏桶
降级
拒绝服务
关闭服务
熔断
幂等
压测
线上压测
线下压测
jmeter等
灰度发布
监控报警
数据层
冗余备份
如何应对副本同步延迟和中断导致的数据一致性问题
数据备份
冷备份
热备份
异步热备份
同步热备份
失效转移
高性能
前端优化
浏览器优化
前端业务处理代码优化
减少请求次数
使用浏览器缓存
启用压缩
CDN加速
JS异步
反向代理
减少Cookie传输
应用层优化
使用缓存
集群
异步
代码优化
合理的架构
多线程
资源复用
良好的数据结构
JVM调优
缓存
存储优化
缓存
高性能存储盘
分布式存储
NoSQL
光纤传输
减少数据库IO操作
读写分离
分库分表
高并发
高并发指标
响应时间
吞吐量
QPS
并发用户数
高并发手段
加机器
增加单机性能
架构实践
常用的rpc框架有哪些?
DDD
限界上下文
案例
电商秒杀系统
分布式Session存储
新技术
servicemesh
边缘计算
HR问题
1、请你自我介绍一下你自己?
回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历
上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究
的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习
无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。
企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”,企
业喜欢有礼貌的求职者。
2、你觉得你个性上最大的优点是什么?
回答提示:沉着冷静、条理清楚、立场坚定、顽强向上、乐于助人和关心他人、适应能力和
幽默感、乐观和友爱。
3、说说你最大的缺点?
回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求
职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对
不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比
较出色,但事实上,他已经岌岌可危了。业喜欢求职者从自己的优点说起,中间加一些小缺
点,最后再把问题转回到优点上,突出优点的部分,企业喜欢聪明的求职者。
4、你对加班的看法?
回答提示:实际上好多公司问这个问题,并不证明一定要加班,只是想测试你是否愿意为公
司奉献。
回答样本:如果是工作需要我会义不容辞加班,我现在单身,没有任何家庭负担,可以全身
心的投入工作。但同时,我也会提高工作效率,减少不必要的加班。
5、你对薪资的要求?
回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,
那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,
因而他们第一次提出的价钱往往是他们所能给予的最高价钱,他们问你只不过想证实一下这
笔钱是否足以引起你对该工作的兴趣。如果你自己必须说出具体数目,请不要说一个宽泛的
范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当
今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。
回答样本一:我对工资没有硬性要求,我相信贵公司在处理我的问题上会友善合理。我注重
的是找对工作机会,所以只要条件公平,我则不会计较太多。
回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训,而且我本人也对编程
特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。
6、你的职业规划?
回答提示:这是每一个应聘者都不希望被问到的问题,但是几乎每个人都会被问到,比较多
的答案是“管理者”。但是近几年来,许多公司都已经建立了专门的技术途径。这些工作地
位往往被称作“顾问”、“参议技师”或“高级软件工程师”等等。当然,说出其他一些你感
兴趣的职位也是可以的,比如产品销售部经理,生产部经理等一些与你的专业有相关背景的
工作。要知道,考官总是喜欢有进取心的应聘者,此时如果说“不知道”,或许就会使你丧
失一个好机会。最普通的回答应该是“我准备在技术领域有所作为”或“我希望能按照公司
的管理思路发展”。
7、你还有什么问题要问吗?
回答提示:企业的这个问题看上去可有可无,其实很关键,企业不喜欢说“没问题”的人,
因为其很注重员工的个性和创新能力。企业不喜欢求职者问个人福利之类的问题,如果有人
这样问:贵公司对新入公司的员工有没有什么培训项目,我可以参加吗?或者说贵公司的晋
升机制是什么样的?企业将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的
上进心。
8、如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,
你怎么办?
回答提示:一段时间发现工作不适合我,有两种情况:①如果你确实热爱这个职业,那你就
要不断学习,虚心向领导和同事学习业务知识和处事经验,了解这个职业的精神内涵和职业
要求,力争减少差距;②你觉得这个职业可有可无,那还是趁早换个职业,去发现适合你的,
你热爱的职业,那样你的发展前途也会大点,对单位和个人都有好处。
9、在完成某项工作时,你认为领导要求的方式不是最好的,自己还有更好的方法,你应该
怎么做?
回答提示:①.原则上我会尊重和服从领导的工作安排,同时私底下找机会以请教的口吻,
婉转地表达自己的想法,看看领导是否能改变想法。②如果领导没有采纳我的建议,我也同
样会按领导的要求认真地去完成这项工作。③.还有一种情况,假如领导要求的方式违背原
则,我会坚决提出反对意见,如领导仍固执己见,我会毫不犹豫地再向上级领导反映。
10、如果你的工作出现失误,给本公司造成经济损失,你认为该怎么办?
回答提示:①我本意是为公司努力工作,如果造成经济损失,我认为首要的问题是想方设法
去弥补或挽回经济损失。如果我无能力负责,希望单位帮助解决。②分清责任,各负其责,
如果是我的责任,我甘愿受罚;如果是一个我负责的团队中别人的失误,也不能幸灾乐祸,
作为一个团队,需要互相提携共同完成工作,安慰同事并且帮助同事查找原因总结经验。
③总结经验教训,一个人的一生不可能不犯错误,重要的是能从自己的或者是别人的错误中
吸取经验教训,并在今后的工作中避免发生同类的错误。检讨自己的工作方法、分析问题的
深度和力度是否不够,以致出现了本可以避免的错误。
11、谈谈你对跳槽的看法?
回答提示:①正常的“跳槽”能促进人才合理流动,应该支持。②频繁的跳槽对单位和个人
双方都不利,应该反对。
12、工作中你难以和同事、上司相处,你该怎么办?
回答提示:①我会服从领导的指挥,配合同事的工作。②我会从自身找原因,仔细分析是不
是自己工作做得不好让领导不满意,同事看不惯。还要看看是不是为人处世方面做得不好,
如果是这样的话 我会努力改正。③如果我找不到原因,我会找机会跟他们沟通,请他们指
出我的不足,有问题就及时改正。④作为优秀的员工,应该时刻以大局为重,即使在一段时
间内,领导和同事对我不理解,我也会做好本职工作,虚心向他们学习,我相信,他们会看
见我在努力,总有一天会对我微笑的。
13、你对于我们公司了解多少?
回答提示:在去公司面试前上网查一下该公司主营业务。如回答:贵公司有意改变策略,加
强与国外大厂的 OEM 合作,自有品牌的部分则透过海外经销商。
14、请说出你选择这份工作的动机?
回答提示:这是想知道面试者对这份工作的热忱及理解度,并筛选因一时兴起而来应试的人,
如果是无经验者,可以强调“就算职种不同,也希望有机会发挥之前的经验”。
15、你最擅长的技术方向是什么?
回答提示:说和你要应聘的职位相关的课程,表现一下自己的热诚没有什么坏处。
16、你能为我们公司带来什么呢?
回答提示:企业很想知道未来的员工能为企业做什么,求职者应再次重复自己的优势,然后
说:“就我的能力,我可以做一个优秀的员工在组织中发挥能力,给组织带来高效率和更多
的收益”。企业喜欢求职者就申请的职位表明自己的能力,比如申请营销之类的职位,可以
说:“我可以开发大量的新客户,同时,对老客户做更全面周到的服务,开发老客户的新需
求和消费。”等等。
17、最能概括你自己的三个词是什么?
回答提示:我经常用的三个词是:适应能力强,有责任心和做事有始终,结合具体例子向主
考官解释,
18、为什么要离职?
回答提示:回答这个问题时一定要小心,就算在前一个工作受到再大的委屈,对公司有多少
的怨言,都千万不要表现出来,尤其要避免对公司本身主管的批评,避免面试官的负面情绪
及印象。建议此时最好的回答方式是将问题归咎在自己身上,例如觉得工作没有学习发展的
更多关注 Java 大后端公众号
空间,自己想在面试工作的相关产业中多加学习,或是前一份工作与自己的生涯规划不合等
等,回答的答案最好是积极正面的。
回答样本:我希望能获得一份更好的工作,如果机会来临,我会抓住。我觉得目前的工作,
已经达到顶峰,即沒有升迁机会。
19、对工作的期望与目标何在?
回答提示:这是面试者用来评断求职者是否对自己有一定程度的期望、对这份工作是否了解
的问题。对于工作有确实学习目标的人通常学习较快,对于新工作自然较容易进入状况,这
时建议你,最好针对工作的性质找出一个确实的答案,如业务员的工作可以这样回答:“我
的目标是能成为一个超级业务员,将公司的产品广泛的推销出去,达到最好的业绩成效;为
了达到这个目标,我一定会努力学习,而我相信以我认真负责的态度,一定可以达到这个目
标。”其他类的工作也可以比照这个方式来回答,只要在目标方面稍微修改一下就可以了。
20、就你申请的这个职位,你认为你还欠缺什么?
回答提示:企业喜欢问求职者弱点,但精明的求职者一般不直接回答。他们希望看到这样的
求职者:继续重复自己的优势,然后说:“对于这个职位和我的能力来说,我相信自己是可
以胜任的,只是缺乏经验,这个问题我想我可以进入公司以后以最短的时间来解决,我的学
习能力很强,我相信可以很快融入公司的企业文化,进入工作状态。”企业喜欢能够巧妙地
躲过难题的求职者。
21、你通常如何处理別人的批评?
回答提示:①沈默是金,不必说什么,否则情况更糟,不过我会接受建设性的批评。②我会
等大家冷靜下来再讨论。
22、怎样对待自己的失敗?
回答提示:我们大家生来都不是十全十美的,我相信我有第二个机会改正我的错误。
23、什么会让你有成就感?
回答提示:为贵公司竭力效劳,尽我所能,完成一个项目。
24、你为什么愿意到我们公司来工作?
回答提示:对于这个问题,你要格外小心,如果你已经对该单位作了研究,你可以回答一些
详细的原因,像“公司本身的高技术开发环境很吸引我。”、“我同公司出生在同样的时代,
我希望能够进入一家与我共同成长的公司。”、“你们公司一直都稳定发展,在近几年来在市
场上很有竞争力。”、“我认为贵公司能够给我提供一个与众不同的发展道路。”这都显示出你
已经做了一些调查,也说明你对自己的未来有了较为具体的远景规划。
25、你和别人发生过争执吗?你是怎样解决的?
回答提示:这是面试中最险恶的问题,其实是考官布下的一个陷阱,千万不要说任何人的过
错,应知成功解决矛盾是一个协作团体中成员所必备的能力。假如你工作在一个服务行业,
这个问题简直成了最重要的一个环节。你是否能获得这份工作,将取决于这个问题的回答。
考官希望看到你是成熟且乐于奉献的。他们通过这个问题了解你的成熟度和处世能力。在没
有外界干涉的情况下,通过妥协的方式来解决才是正确答案。
26、对这项工作,你有哪些可预见的困难?
回答提示:①不宜直接说出具体的困难,否则可能令对方怀疑应聘者不行。②可以尝试迂回
战术,说出应聘者对困难所持有的态度——工作中出现一些困难是正常的,也是难免的,但
是只要有坚忍不拔的毅力、良好的合作精神以及事前周密而充分的准备,任何困难都是可以
克服。
分析:一般问这个问题,面试者的希望就比较大了,因为已经在谈工作细节,但常规思路中
的回答,又被面试官“骗”了。当面试官询问这个问题的时候,有两个目的。第一,看看应
聘者是不是在行,说出的困难是不是在这个职位中一般都不可避免的问题。第二,是想看一
下应聘者解决困难的手法对不对,及公司能否提供这样的资源。而不是想了解应聘者对困难
的态度。
27、如果我录用你,你将怎样开展工作?
回答提示: ①如果应聘者对于应聘的职位缺乏足够的了解,最好不要直接说出自己开展工
作的具体办法。②可以尝试采用迂回战术来回答,如“首先听取领导的指示和要求,然后就
有关情况进行了解和熟悉,接下来制定一份近期的工作计划并报领导批准,最后根据计划开
展工作。”。
分析:这个问题的主要目的也是了解应聘者的工作能力和计划性、条理性,而且重点想要知
道细节。如果向思路中所讲的迂回战术,面试官会认为回避问题,如果引导了几次仍然是回
避的话,此人绝对不会录用了。
28、在完成某项工作时,你认为领导要求的方式不是最好的,自己还有更好的方法,你应
该怎么做?与上级意见不一是,你将怎么办?
该怎么做?与上级意见不一是,你将怎么办?
回答提示:①.原则上我会尊重和服从领导的工作安排;同时私底下找机会以请教的口吻,
婉转地表达自己的想法,看看领导是否能改变想法。②如果领导没有采纳我的建议,我也同
样会按领导的要求认真地去完成这项工作。③.还有一种情况,假如领导要求的方式违背原
则,我会坚决提出反对意见,如领导仍固执己见,我会毫不犹豫地再向上级领导反映。
29、你工作经验欠缺,如何能胜任这项工作?
常规思路:①如果招聘单位对应届毕业生的应聘者提出这个问题,说明招聘公司并不真正在
乎“经验”,关键看应聘者怎样回答。②对这个问题的回答最好要体现出应聘者的诚恳、机
智、果敢及敬业。③如“作为应届毕业生,在工作经验方面的确会有所欠缺,因此在读书期
间我一直利用各种机会在这个行业里做兼职。我也发现,实际工作远比书本知识丰富、复杂。
但我有较强的责任心、适应能力和学习能力,而且比较勤奋,所以在兼职中均能圆满完成各
项工作,从中获取的经验也令我受益非浅。请贵公司放心,学校所学及兼职的工作经验使我
一定能胜任这个职位。”
点评:这个问题思路中的答案尚可,突出自己的吃苦能力和适应性以及学习能力(不是学习
成绩)为好。
乎“经验”,关键看应聘者怎样回答。②对这个问题的回答最好要体现出应聘者的诚恳、机
智、果敢及敬业。③如“作为应届毕业生,在工作经验方面的确会有所欠缺,因此在读书期
间我一直利用各种机会在这个行业里做兼职。我也发现,实际工作远比书本知识丰富、复杂。
但我有较强的责任心、适应能力和学习能力,而且比较勤奋,所以在兼职中均能圆满完成各
项工作,从中获取的经验也令我受益非浅。请贵公司放心,学校所学及兼职的工作经验使我
一定能胜任这个职位。”
点评:这个问题思路中的答案尚可,突出自己的吃苦能力和适应性以及学习能力(不是学习
成绩)为好。
30、您在前一家公司的离职原因是什么?
回答提示:①最重要的是:应聘者要使找招聘单位相信,应聘者在过往的单位的“离职原因”
在此家招聘单位里不存在。②避免把“离职原因”说得太详细、太具体。③不能掺杂主观的
负面感受,如“太辛苦”、“人际关系复杂”、“管理太混乱”、“公司不重视人才”、“公司排斥
我们某某的员工”等。④但也不能躲闪、回避,如“想换换环境”、“个人原因”等。⑤不能
涉及自己负面的人格特征,如不诚实、懒惰、缺乏责任感、不随和等。⑥尽量使解释的理由
为应聘者个人形象添彩。⑦相关例子:如“我离职是因为这家公司倒闭;我在公司工作了三
年多,有较深的感情;从去年始,由于市场形势突变,公司的局面急转直下;到眼下这一步
我觉得很遗憾,但还要面对显示,重新寻找能发挥我能力的舞台。”同一个面试问题并非只
有一个答案,而同一个答案并不是在任何面试场合都有效,关键在应聘者掌握了规律后,对
面试的具体情况进行把握,有意识地揣摩面试官提出问题的心理背景,然后投其所好。
分析:除非是薪资太低,或者是最初的工作,否则不要用薪资作为理由。“求发展”也被考
官听得太多,离职理由要根据每个人的真实离职理由来设计,但是在回答时一定要表现得真
诚。实在想不出来的时候,家在外地可以说是因为家中有事,须请假几个月,公司又不可能
准假,所以辞职,这个答案一般面试官还能接受。
31、为了做好你工作份外之事,你该怎样获得他人的支持和帮助?
回答提示:每个公司都在不断变化发展的过程中,你当然希望你的员工也是这样。你希望得
到那些希望并欢迎变化的人,因为这些人明白,为了公司的发展,变化是公司日常生活中重
要组成部分。这样的员工往往很容易适应公司的变化,并会对变化做出积极的响应。
32、果你在这次面试中没有被录用,你怎么打算?
回答提示:现在的社会是一个竞争的社会,从这次面试中也可看出这一点,有竞争就必然有
优劣,有成功必定就会有失败。往往成功的背后有许多的困难和挫折,如果这次失败了也仅
仅是一次而已,只有经过经验经历的积累才能塑造出一个完全的成功者。我会从以下几个方
面来正确看待这次失败:①要敢于面对,面对这次失败不气馁,接受已经失去了这次机会就
不会回头这个现实,从心理意志和精神上体现出对这次失败的抵抗力。要有自信,相信自己
经历了这次之后经过努力一定能行,能够超越自我。②善于反思,对于这次面试经验要认真
总结,思考剖析,能够从自身的角度找差距。正确对待自己,实事求是地评价自己,辩证的
看待自己的长短得失,做一个明白人。③走出阴影,要克服这一次失败带给自己的心理压力,
时刻牢记自己弱点,防患于未然,加强学习,提高自身素质。④认真工作,回到原单位岗位
上后,要实实在在、踏踏实实地工作,三十六行、行行出状元,争取在本岗位上做出一定的成绩。
⑤再接再厉,成为国家公务员一直是我的梦想,以后如果有机会我仍然后再次参加竞
争。
优劣,有成功必定就会有失败。往往成功的背后有许多的困难和挫折,如果这次失败了也仅
仅是一次而已,只有经过经验经历的积累才能塑造出一个完全的成功者。我会从以下几个方
面来正确看待这次失败:①要敢于面对,面对这次失败不气馁,接受已经失去了这次机会就
不会回头这个现实,从心理意志和精神上体现出对这次失败的抵抗力。要有自信,相信自己
经历了这次之后经过努力一定能行,能够超越自我。②善于反思,对于这次面试经验要认真
总结,思考剖析,能够从自身的角度找差距。正确对待自己,实事求是地评价自己,辩证的
看待自己的长短得失,做一个明白人。③走出阴影,要克服这一次失败带给自己的心理压力,
时刻牢记自己弱点,防患于未然,加强学习,提高自身素质。④认真工作,回到原单位岗位
上后,要实实在在、踏踏实实地工作,三十六行、行行出状元,争取在本岗位上做出一定的成绩。
⑤再接再厉,成为国家公务员一直是我的梦想,以后如果有机会我仍然后再次参加竞
争。
33、谈谈你过去做过的成功案例?(工作中遇到什么问题)
回答提示:举一个你最有把握的例子,把来龙去脉说清楚,而不要说了很多却没有重点。切
忌夸大其词,把别人的功劳到说成自己的,很多主管为了确保要用的人是最适合的,会打电
话向你的前一个主管征询对你的看法及意见,所以如果说谎,是很容易穿梆的。
34、如何安排自己的时间?会不会排斥加班?
回答提示:基本上,如果上班工作有效率,工作量合理的话,应该不太需要加班。可是我也
知道有时候很难避免加班,加上现在工作都采用责任制,所以我会调配自己的时间,全力配
合。
分析:虽然不会有人心甘情愿的加班,但依旧要表现出高配合度的诚意。
35、这个职务的期许?
回答提示:希望能借此发挥我的所学及专长,同时也吸收贵公司在这方面的经验,就公司、
我个人而言,缔造“双赢”的局面。
分析:回答前不妨先询问该公司对这项职务的责任认定及归属,因为每一家公司的状况不尽
相同,以免说了一堆理想抱负却发现牛头不对马嘴。
36、什么选择我们这家公司?
回答提示:曾经在报章杂志看过关于贵公司的报道,与自己所追求的理念有志一同。而贵公
司在业界的成绩也是有目共睹的,而且对员工的教育训练、升迁等也都很有制度。
分析:去面试前先做功课,了解一下该公司的背景,让对方觉得你真的很有心想得到这份工
作,而不只是探探路。
37、谈谈如何适应办公室工作的新环境?
回答提示:①办公室里每个人有各自的岗位与职责,不得擅离岗位。②根据领导指示和工作
安排,制定工作计划,提前预备,并按计划完成。③多请示并及时汇报,遇到不明白的要虚
心请教。④抓间隙时间,多学习,努力提高自己的政治素质和业务水平。
38、工作中学习到了些什么?
回答提示:这是针对转职者提出的问题,建议此时可以配合面试工作的特点作为主要依据来
回答,如业务工作需要与人沟通,便可举出之前工作与人沟通的例子,经历了哪些困难,学
习到哪些经验,把握这些要点做陈述,就可以轻易过关了。
39、除了本公司外,还应聘了哪些公司?
回答提示:很奇怪,这是相当多公司会问的问题,其用意是要概略知道应徵者的求职志向,所以这并非绝对是负面答案,就算不便说出公司名称,也应回答“销售同种产品的公司”,如果应聘的其他公司是不同业界,容易让人产生无法信任的感觉。
40、何时可以到职?
回答提示:大多数企业会关心就职时间,最好是回答“如果被录用的话,到职日可按公司规
定上班”,但如果还未辞去上一个工作、上班时间又太近,似乎有些强人所难,因为交接至
少要一个月的时间,应进一步说明原因,录取公司应该会通融的。
综合
沟通能力
理解能力
性格品质
稳定性
离职原因
职业规划
上进心
感到委屈的事
感到成就的事
对团队的期望
对工作的期望
0 条评论
下一页