Java相关
Java GC机制(重要程度:★★★★★)
主要从三个方面回答:GC是针对什么对象进行回收(可达性分析法),什么时候开始GC(当新生代满了会进行Minor GC,升到老年代的对象大于老年代剩余空间时会进行Major GC),GC做什么(新生代采用复制算法,老年代采用标记-清除或标记-整理算法),感觉回答这些就差不多了,也可以补充一下可以调优的参数(-XX:newRatio,-Xms,-Xmx等等)。详细的可以看我另一篇博客(Java中的垃圾回收机制)。
如何线程安全的使用HashMap(重要程度:★★★★★)
作为Java程序员还是经常和HashMap打交道的,所以HashMap的一些原理还是搞搞清除比较好。这个问题感觉主要就是问HashMap,HashTable,ConcurrentHashMap,sychronizedMap的原理和区别。具体的可以看我另一篇博客(如何线程安全的使用HashMap)。
HashMap是如何解决冲突的(重要程度:★★★★☆)
其实就是链接法,将索引值相同的元素存放到一个单链表里。但为了解决在频繁冲突时HashMap性能降低的问题,Java 8中做了一个小优化,在冲突的元素个数超过设定的值(默认为8)时,会使用平衡树来替代链表存储冲突的元素。具体的可以看我另一篇博客(Java 8中HashMap和LinkedHashMap如何解决冲突)。
Java创建对象有哪几种(重要程度:★★★★☆)
这个问题还算好回答,大概有四种—new、工厂模式、反射和克隆,不过这个问题有可能衍生出关于设计模式,反射,深克隆,浅克隆等一系列问题。。。要做好准备~
参考资料:
设计模式Java版
Java反射详解
深克隆与浅克隆的区别
注解(重要程度:★★★☆☆)
如果简历中有提到过曾自定义过注解,还是了解清楚比较好。主要是了解在自定义注解时需要使用的两个主要的元注解@Retention和@Target。@Retention用来声明注解的保留策略,有CLASS,RUNTIME,SOURCE三种,分别表示注解保存在类文件,JVM运行时刻和源代码中。@Target用来声明注解可以被添加到哪些类型的元素上,如类型,方法和域等。
参考资料:
Java注解
异常(重要程度:★★★☆☆)
一道笔试题,代码如下,问返回值是什么。
1
2
3
4
5
6
7
8
9
10
11
|
int ret = 0 ;
try {
throw new Exception();
} catch (Exception e){
ret = 1 ;
return ret;
} finally {
ret = 2 ;
} |
主要的考点就是catch中的return在finally之后执行 但是会将return的值放到一个地方存起来,所以finally中的ret=2会执行,但返回值是1。
参考资料:
深入理解Java异常处理机制
Java异常处理
悲观锁和乐观锁区别,乐观锁适用于什么情况(重要程度:★★★★☆)
悲观锁,就是总觉得有刁民想害朕,每次访问数据的时候都觉得会有别人修改它,所以每次拿数据时都会上锁,确保在自己使用的过程中不会被他人访问。乐观锁就是很单纯,心态好,所以每次拿数据的时候都不会上锁,只是在更新数据的时候去判断该数据是否被别人修改过。
大多数的关系数据库写入操作都是基于悲观锁,缺点在于如果持有锁的客户端运行的很慢,那么等待解锁的客户端被阻塞的时间就越长。Redis的事务是基于乐观锁的机制,不会在执行WATCH命令时对数据进行加锁,只是会在数据已经被其他客户端抢先修改了的情况下,通知执行WATCH命令的客户端。乐观锁适用于读多写少的情况,因为在写操作比较频繁的时候,会不断地retry,从而降低性能。
参考资料:
关于悲观锁和乐观锁的区别
乐观锁和悲观锁
单例模式找错误(重要程度:★★★★☆)
错误是没有将构造函数私有化,单例还是比较简单的,把它的饿汉式和懒汉式的两种实现方式看明白了就可以了。
单例模式
__
Spring相关
关于Spring的问题主要就是围绕着Ioc和AOP,它们真是Spring的核心啊。
Spring Bean的生命周期(重要程度:★★★★★)
就不写我那么low的回答了,直接看参考资料吧。
参考资料:
Spring Bean的生命周期
Top 10 Spring Interview Questions Answers J2EE
Spring中用到的设计模式(重要程度:★★★★★)
工厂模式:IOC容器
代理模式:AOP
策略模式:在spring采取动态代理时,根据代理的类有无实现接口有JDK和CGLIB两种代理方式,就是采用策略模式实现的
单例模式:默认情况下spring中的bean只存在一个实例
只知道这四个。。。。
参考资料:
Design Patterns Used in Java Spring Framework
讲一讲Spring IoC和AOP(重要程度:★★★★★)
IoC的核心是依赖反转,将创建对象和对象之间的依赖管理交给IoC容器来做,完成对象之间的解耦。
AOP主要是利用代理模式,把许多接口都要用的又和接口本身主要的业务逻辑无关的部分抽出来,写成一个切面,单独维护,比如权限验证。这样可以使接口符合“单一职责原则”,只关注主要的业务逻辑,也提高了代码的重用性。
AOP的应用场景(重要程度:★★★★☆)
权限,日志,处理异常,事务等等,个人理解就是把许多接口都要用的又和接口本身主要的业务逻辑无关的部分抽出来,写成一个切面,单独维护,比如权限验证。这样可以使接口符合“单一职责原则”,只关注主要的业务逻辑,也提高了代码的重用性。
Spring中编码统一要如何做(重要程度:★★★☆☆)
配置一个拦截器就行了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<filter> <filter-name>CharacterEncodingFilter</filter-name>
<filter- class >org.springframework.web.filter.CharacterEncodingFilter</filter- class >
<init-param>
<param-name>encoding</param-name>
<param-value>UTF- 8 </param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value> true </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
|
数据库相关
Mysql索引的内部结构(重要程度:★★★★☆)
B+树,三层,真实的数据存储在叶子节点
参考资料:
MySQL索引原理及慢查询优化
如果一个SQL执行时间比较长怎么办(重要程度:★★★★☆)
可以利用pt-query-digest等工具分析慢查询日志,也可以用explain查看SQL的执行计划。具体可看我的另一篇博客MySQL调优
如果一张表中有上千万条数据应该怎么做分页(重要程度:★★★☆☆)
肯定不能直接limit,offset,主要就是要想办法避免在数据量大时扫描过多的记录。具体可看我的另一篇博客【译】优化MySQL中的分页
什么样的列适合加索引,如果一个列的值只有1和2,那么它适合加索引么(重要程度:★★★☆☆)
- 在where从句,group by从句,order by从句,on从句中出现的列
- 索引的字段越小越好
- 在建立联合索引时,离散度大的列放大联合索引的前面
只有1和2不适合建索引
Redis相关
Redis提供哪几种数据结构(重要程度:★★★★★)
一共有5种,字符串,散列,列表,集合,有序集合。
参考资料:
Redis中文官网
Redis支持集群么,从哪个版本开始支持集群的(重要程度:★★☆☆☆)
支持集群,从3.0版本开始。当然面试时我也没记住版本。。。
Redis集群中,如何将一个对象映射到对应的缓存服务器(重要程度:★★★★☆)
一般就是hash%N,就是用对象的hash值对缓存服务器的个数取余
接上个问题,缓存集群中如果新增一台服务器,怎么才能不影响大部分缓存数据的命中?(重要程度:★★★★☆)
其实就是一致性Hash算法。以前有看过,可惜面试的时候脑袋就空了,只记得一个环,果然还是要实践啊。
参考资料:
Consistent Hashing
五分钟理解一致性哈希算法(consistent hashing)
项目中具体是怎样使用Redis的(重要程度:★★★★☆)
根据实际情况回答吧。。。。我是主要做权限控制时用到了Redis,将用户Id和权限Code拼接在一起作为一个key,放到Redis的集合中,在验证某一用户是否有指定权限时,只需验证集合中是否有用户Id和权限Code拼接的key即可
算法相关
判断一个数字是否为快乐数字(重要程度:★☆☆☆☆)
leetcode第202题
链接
给定一个乱序数组和一个目标数字 找到和为这个数字的两个数字 时间复杂度是多少(重要程度:★☆☆☆☆)
leetcode第一题
链接
如何判断一个链表有没有环(重要程度:★☆☆☆☆)
用快慢指针
删除字符串中的空格 只留一个(重要程度:★☆☆☆☆)
这个比较简单。。。。
二叉树层序遍历(重要程度:★★☆☆☆)
利用队列就可以了
地铁票价是如何计算的(重要程度:★★☆☆☆)
不知道正确答案,感觉是图的最短路径算法相关的。
Elasticsearch相关
为什么要用Elasticsearch(重要程度:★★★★☆)
其实对Es的了解还是比较少的,因为没做多久就去写坑爹代理商了。个人觉得项目中用Es的原因一是可以做分词,二是Es中采用的是倒排索引所以性能比较好,三是Es是个分布式的搜索服务,对各个节点的配置还是很简单方便的
Elasticsearch中的数据来源是什么,如何做同步(重要程度:★★★★☆)
数据是来自其他部门的数据库,会在一开始写python脚本做全量更新,之后利用RabbitMQ做增量更新,就是数据更改之后,数据提供方将更改的数据插入到指定消息队列,由对应的消费者索引到Es中
接上个问题,利用消息队列是会对对方代码造成侵入的,还有没有别的方式(重要程度:★★★☆☆)
还可以读MySQL的binlog
发散思维的题
以下题都是没有正确答案的,不知道是想考思维,还是压力面试,就只写题目,不写回答了。。。
画一下心中房树人的关系(重要程度:★☆☆☆☆)
给你一块地建房如何规划(重要程度:★☆☆☆☆)
估计二号线有几辆车在运行(重要程度:★☆☆☆☆)
其他
Thrift通信协议(重要程度:★★★☆☆)
这个问题被问了两遍,然而现在还是不知道。。。什么东西都不能停留在只会用的阶段啊~
git相关(重要程度:★★★★★)
一些git相关的问题,比如如何做分支管理(git flow),rebase和merge的区别(merge操作会生成一个新的节点)等等。。。
如何学习一门新技术(重要程度:★★★☆☆)
google+官网+stackoverflow+github
比较爱逛的网站和爱看的书(重要程度:★★★☆☆)
根据实际情况回答吧。。。
了不了解微服务(重要程度:★★☆☆☆)
简单了解过。。。
参考资料:
基于微服务的软件架构模式
针对简历中的项目问一些问题(重要程度:★★★★★)
就是根据简历上的项目问一些东西,比如权限控制是怎么做的,有没有碰到过比较难解决的问题之类的,不具体列举了,只要简历上的内容是真实的基本都没啥问题
为什么要离职(重要程度:★★★★★)
被问了n遍,挺不好回答的一个问题,毕竟不算实习期工作还没满一年,这个时候跳槽很容易让人觉得不安稳。。。。
对公司还有什么问题(重要程度:★★★★★)
基本每轮面试结束都会问的一个问题,一开始也没当回事,直到有家公司居然挂在四面的这个问题上,我也是蛮醉的,果然言多必失啊。。。
在***公司最大的收获是什么(重要程度:★★★★★)
对于我来说,觉得最大的收获就是对企业级的应用有了一个大致的了解,企业里的项目不像学校的课程作业,只要jdbc连接数据库完成功能就可以了,企业的项目要考虑很多东西,比如说为了提高可用性,要部署在多台服务器上,用nginx做负载均衡,还有就是用缓存,异步之类来提高接口性能。然后,也是第一次接触到SOA,这种面向服务的架构。也了解到一个好的应用,除了开发本身,一些自动化发布系统和监控系统也是必不可少的。当然,还认识了一群三观合的小伙伴~~~
面试真真是件很心累的事情,每次面完都感觉被拔了层皮,希望两年内不要在面试了。后天就要入职了,想想还有点小紧张呢,去看学叔推荐的美剧压压惊。。。
原文出处: Giraffe
相关推荐
陈涛后端面试总结 这篇文章总结了数字IC后端的一些重要问题,涵盖了电源走线的选择、交替路由的应用、线间干扰的解决、标准单元延迟的影响因素、禁止使用库中某些单元、wire load model的类型、延迟模型的类型、...
这份"10万字面试总结Java.pdf"涵盖了Java基础知识、JVM、Spring框架、并发编程、Linux、Dubbo、Mybatis、Springcloud、Spring Boot、消息队列和Zookeeper等多个核心主题,旨在帮助Java开发者全面准备面试。...
### 阿里面试总结及答案 #### 一、Java事件机制 Java事件机制是Swing框架中的核心组件之一,它允许程序响应用户输入或其他事件。该机制主要包括三个方面:事件、事件监听器以及事件源。 - **事件**:通常继承自`...
在进行《我想进大厂》的面试总结时,我们首先要了解面试对于求职者和招聘方的重要性。面试不仅仅是一个考核和选择的过程,它也反映了求职者的职业素养、技术能力、沟通技巧和解决问题的能力。而对于面试官而言,面试...
全网最全-谷粒商城项目-面试总结-简历优化_Java-You的博客-CSDN博客 .html
2020年上海JAVA开发工程师面试总结
阿里巴巴面试总结DOC版 本资源摘要信息主要总结了阿里巴巴面试中的问题和答案,涵盖了 Java 编程语言、设计模式、JVM 内存模型、ClassLoader 结构、UML 模型图、OSGi 框架、Spring 框架、iBatis 框架、Java 序列化...
本文档是关于软件工程师程序员Java面试题和答案的总结,涵盖了Java语言的特点、面向对象和面向过程的区别、基本数据类型、标识符的命名规则、instanceof关键字的作用、Java自动装箱与拆箱等知识点。 一、Java语言的...
Java面试总结面试总结PDF
面试总结
面试总结
在2018年的秋季招聘中,iOS面试成为众多求职者关注的焦点。这个时期的面试不仅反映了当时的iOS技术趋势,也为后来的求职者提供了宝贵的参考经验。以下是对2018年秋招iOS面试中常见知识点的详尽解析: 1. **...
【标题】:“面试录音&面试总结.zip”是一个包含面试过程记录和回顾的压缩文件,它可能包括了求职者与招聘方的对话音频以及面试后的个人反思和总结文档。这类文件对于求职者来说是宝贵的资源,可以帮助他们分析面试...
### 图像面试总结 在近期参加的一系列技术面试过程中,遇到了不少与图像处理相关的技术问题。为了更好地总结经验,本文将对这些面试中涉及到的知识点进行详细的归纳与解析。 #### 1. 指针与图像数据结构 面试中...
【西安2010Java面试总结】 在2010年的西安Java面试中,面试官主要关注以下几个核心知识点,这些内容对于Java开发者来说至关重要,也是面试官用来评估候选人技术实力的关键标准。 1. **Java基础知识**:面试通常从...
【创迹面试总结】 面试是求职过程中的关键环节,它不仅是公司评估求职者能力与适应性的途径,也是求职者展示自身素质和专业素养的机会。在创迹面试中,面试官通常会关注以下几个方面: 1. **项目经验**:面试官会...
Java面试大全涵盖了大量的技术知识点,这些内容通常会出现在各大公司的面试过程中。为了帮助你更好地准备,以下是基于描述中提到的“31个文档”可能涉及的一些核心Java面试知识点的详细阐述: 1. **基础概念**:...
【Java开发面试总结】 在Java开发的面试过程中,面试官通常会关注候选人的技术栈是否广泛且深入。这里,我们重点讨论几个关键知识点,包括前端技术、JavaScript、Ajax、Java基础以及Web开发框架。 1. **前端开发...
这份面试总结涵盖了从人力资源面试到专业技能测试的关键点,旨在帮助应聘者充分准备。以下是一些重要的知识点: 1. **HR面试**: - 自我介绍:清晰地表述个人背景、教育经历和相关工作经验,展示与职位相关的技能...