面试总结之必问题目汇总

以下题目搜集于面试过程中,主要适用于 1~3 年工作经验的开发者,当然个人以为工作3~5年后,还是会问这些个问题,只是面试官会揪着某一个知识点往深入里面问下去,就看被面试者自身的能力;

java 基础类

  • HashMap 和 HashSet 区别?HashMap 和 HashTable 的区别?HashMap 和 TreeMap 以及LinkedHashMap 的区别?各自底层的数据结构是什么?HashMap、ArrayList 等数据结构的扩容倍率?HashMap 底层为什么要用数组?
  • HashMap的数据结构是什么?数组加链表,那取值时如何从链表里面取到希望的value呢?
  • Try…catch…return的返回值判断?执行顺序?return 加在 try 代码块里面之后的顺序?
  • CurrentHashMap的实现原理?与 HashMap 相比而言,改进在哪里?如何实现的?
  • 设计模式用过哪些?单例模式的几种写法?JDK 里面有哪些典型的API 是你刚才列举的常用的设计模式?
  • 单例模式的判断,即给出一个类似单例模式的代码段,指出里面的错误的地方?懒汉 vs 饿汉,两者的区别?
  • JDK 动态代理和 cglib 代理的区别?
  • 关于时间复杂度的计算和推导是否熟悉或者了解,ArrayList的时间复杂度,各种排序算法的时间复杂度是多少?Spring 框架里面有哪些设计模式应用?
  • JVM的结构图?ClassLoader原理以及示例图?两个类是否可以互为父ClassLoader?
    并发和并行区别?
  • 线程之间的通信方式?创建线程的几种方式?wait()和sleep()的区别?
  • 关于多线程,ThreadPoolExecutor 的几个重要参数,分别是什么意思?举一个现实中的实例,加以说明最好。
  • synchronized关键字和juc锁的对比区别?
  • 现实问题如OOM或者死锁的排错思路?
  • Checked Exception 和 Unchecked Exception 的区别是什么?已经有 checked exception 的情况下,JDK 为什么还要提供 unchecked exception?
  • 运算符的优先级(不常见)
  • Java堆的划分?
  • 垃圾回收机制以及算法?相互引用的两个独立对象如何被垃圾回收器回收?垃圾回收判断可达的出发点是什么?
  • Equal和==的区别?equals() 和 hashCode() 方法?什么时候需要重写?
  • java.io.* 包的熟悉程度;字节流与字符流的区分(如选择题)?进一步,nio 的理解,其使用场景。
  • SPI的思想?SPI的应用场景?

框架类

  • SocketTimeOut以及connectionTimeOut的区别?(问题很简单,源于 apache 的http client)
  • RPC框架的性能的关键点是什么?
  • Spring中有哪些设计模式?有没有单例模式?Spring bean 是不是单例模式?或者直接问 Spring 中 bean 的生命周期是什么?
  • spring boot 的优势所在?spring boot 如何做到自动配置的? spring boot 开发中并没有 web.xml 文件,你对这个缺失文件的理解?如何做到的?bootstrap.yml 文件的使用场景?application.properties 和 application.yml 文件的区别?
  • spring cloud 组件的基本使用和了解;
  • 讲讲 Spring!spring的启动过程?你对 IoC 的理解,Aop的理解,ApplicationContext 和 BeanFactory 两个类的区别? IoC容器的启动过程?AOP的使用场景?
  • 对 spring 事务控制的理解?7种传播?4种读的理解?
  • MyBatis 如何实现连接不同的数据库,并且做到统一适配?(不明白什么意图?测试环境使用MySQL数据库,但是生产数据库不仅仅是MySQL,还有oracle等。一套代码!!!不是多数据源。
  • MyBatis如何实现分页?自带的插页功能性能不好,可以使用PageHelper;如果让你设计实现 mybatis 分页,如何实现?那数据库层面的话,是如何支持分页查询?
  • Hibernate 的 get() 和 load() 方法的区别? Hibernate 的 lazyload 和 session 啥的区别?

web 开发

  • HTTP四种方法?
  • 大致讲解一下 HTTP 协议?
  • Session与cookie的区别?cookie的作用?cookie存于什么地方?session的创建以及销毁时机?session存在什么地方,能否持久化?session共享是什么意思?
  • 如何防止表单的重复提交?
  • 如何保证表单的前后台编码的统一?
  • 正向代理和反向代理的区别?
  • Apache和Nginx的区别?
  • HTTPS 和 HTTP 区别,加密算法有哪些?
  • Restful API 的理解以及其实现方式?

数据库

  • 数据库的横表转纵表,反过来,纵表转横表?对横表和纵表的区别和理解以及使用场景等。
  • 关于数据库索引,如何设计?
  • Union all operator 和union区别?
  • left join,right join等区别?
  • 数据库引擎有哪些,区别是什么?
  • 如何定位一个慢查询?
  • 数据库查询如何建立索引?索引优化?加索引为何能够提高查询速度?存储引擎是什么?SQL 优化手段有哪些?数据库的读写分离?由此带来的延迟问题如何解决?
  • 给出三张数据库表,如何联合查询?
  • 给出一个查询语句:select like '',能不能对索引进行优化?
  • 数据库如何进行版本升级?答:两台IP server,使用内网域名而不是各自的 IP 解耦合,DNS 配置,数据迁移工具,域名指向新的IP。
  • 乐观锁与悲观锁?

分布式

  • 分布式了解不?锁并发的理解?数据库锁?分布式锁的实现方式以及优缺点?Redis分布式锁如何实现?
  • 一致性哈希算法?
  • 分布式,最基本的节点?节点的角色?节点如何实现负载均衡?服务提供者如何实现高可用?

数据结构与算法题

  • 100000张试卷,抽取试题,每套试题100道,单套试题不能有重复的题目,两套试题之间最多有一个试题允许重复,问实现结果的数量级?如何最优化实现?
  • Top k 问题的解决思路?进一步,如果限制内存 256M,对一个4G 的文本文件进行排序,如何实现?你这个方法的时间复杂度是多少?参考
  • 给定一个字符串,如何实现倒序输出?输入字符串,空格切割,反转单词组成的字符串?
  • 如何 trim 字符串里面两个以上的空格?
  • 给定一个数组,实现这样的排序:奇数在前,偶数在后;改进算法有没有?改进时间、空间复杂度等;
  • 已排序数组的给定数字的第一个索引的出现位置?
  • 给定一个表达式,如何校验其有效性?提示:可以考虑前缀、中缀、后缀表达式?逆波兰啥的?
  • 给定中序遍历和后序遍历,求前序遍历;编程算法实现呢?

- 有环的链表,两个指针,不同步长,问最少需要共同走多少步才能相遇;深入一点,如何判断一个链表有环?编程算法实现呢?

编码题

  • 给出一大串集合操作,将其转换为 java8 的 stream 流式操作。
  • 取一个给定路径下面的最大的n个文件的全路径名;
  • 实现一个消费者-生产者模型,producer、consumer。

非技术性问题

  • 怎么看待加班问题?
  • 给你一个小模块,你能不能独立完成实现功能?
  • 讲述项目经历,如何解决一个困难的问题?
  • 看过哪些开源项目?可否讲解一下其核心原理?为什么选择这个开源项目等?
  • 项目遇到什么问题?怎么解决?
  • 近在看什么书?
  • 业余时间学习什么技术?这个技术有没有反过来用于工作中?
  • 有没有对产品提出什么建议或者意见?

Bean init-method
Bean的注入
Before通知目标对象方法的三个参数

给定一个List<User>重复元素的删除过滤?
简单!
方法一:使用Set接口的实现类,如TreeSet即可。
方法二:过滤,使用LinkedList的contains方法判断即可。
非基本类型,自定义的User,相等的判断,需要实现equals和hashCode方法。

public class SuckerTester {
    public static void main(String[] args) {
        List<User> userList = new LinkedList<>();
        userList.add(new User(1, "rrr"));
        userList.add(new User(1, "rrr"));
        userList.add(new User(2, "ttt"));
        System.out.println(userList.size());//3

        Set<User> userSet = new HashSet<>();
        userSet.add(new User(1, "rrr"));
        userSet.add(new User(1, "rrr"));
        userSet.add(new User(2, "ttt"));
        System.out.println(userSet.size());//2
    }

    @AllArgsConstructor
    @Data
    public static class User {
        private Integer id;
        private String name;
    }
}
  1. SmartPhone,iPhone,Android,Windows Phone,以及由此而生的带有brand信息的Phone,怎么设计?
  2. JKD,JRE,JVM关系?
  3. Java调用外部程序的方法?

  4. 缓存应用?Redis,写缓存的时机?

  5. Java 程序如何导出Dump文件?用java的API!??
  6. Java程序如何查看每一行代码的内存消耗?

SQL优化?加索引为什么可以提高查询速度?索引失效的情况?联合主键?

Volatile以及CAS原理?
网络socket有了解不?

Redis基本数据类型,持久化方式,如何实现持久化的,Redis实现流量控制?
节点之间的传输协议是什么,http/tcp/udp?tcp和udp的区别?

二叉树的反转?

  • 构造器?
  • 线程的创建,问有没有编译或者运行问题还是正常输出:
public class A extends Thread implements Runnable {
    public static void main(String[] args) {
        Thread t = new Thread(new A());
        t.start();
    }
    @Override
    public void run() {
        System.out.println("lll");
    }
}
  • Spring IoC的简单论述,种类?
  • Spring web的核心作用?

- Spring的几种bean的作用域?

  • 七层网络协议

- 死锁是什么?条件?如何避免?

讲一下spring,多线程使用情况,哪些常用的API?
调度框架quartz的使用?存储有几种方式?Quartz动态改变Cron表达式,来实现动态执行Spring定时任务?
Kubernetes异常状态有哪些?

求矩阵的平均值?比如给定一个3*3的二维矩阵,元素值是灰度值0或1,求平均值,如左上角的平均值是周围四个元素的平均值。
实现一个线程安全的阻塞队列?

多线程的话,用过哪些API,使用场合?

MQ的使用场景?

线程之间的通信方式?

设计秒杀?
系统设计是开发自己实现的吗?工作内容是不是仅仅是开发?微服务设计?

SOA设计?
Gradle?
Spring?Spring boot?服务的注册中心是什么?
一个系统访问日志,比如nginx.log,统计访问次数最高的10个IP?

  1. 链表反转;

已排序数组求出某个数字的起始终止索引;
递归实现二项分布;
粒子群算法讲讲?
抛一枚硬币,正面朝上的概率是60%,反面朝上的概率是40%,问如何实现50-50的概率,即抛多少次才能实现?

哈夫曼树;

  1. 关于序列化,是否implements Serializable,关键字transient,然后是修饰符private和public,问哪个属性可以序列化到文件?

  2. 论述设计题:设计一个高并发的抢红包系统,确保金额的快速即时从A账户转到B1,B2,Bn等。

Java 锁,synchronized与juc包下面的锁的区别?
PostConstruct 用过没?
内存屏障?JVM?JMM?
锁库存?购物车设计?限时购与秒杀?

数据库的设计?主键索引?唯一索引?写出来!
登录模块的用户名验证,密码验证?

猜你喜欢

转载自blog.csdn.net/lonelymanontheway/article/details/80413853
今日推荐