zoukankan      html  css  js  c++  java
  • java开发3~5年工作经验面试题

    关于java基础

    1. String,StringBuilder,StringBuffer区别是什么?底层数据结构是什么?分别是如何实现的?
    2. HashSet的底层实现是什么?它与HashMap有什么关系?
    3. Java 的并发包里面有那些知识点?
    4. HashCode与HashMap的关系?
    5. 哈希函数的理解?
    6. map在put()的做了哪些事?
    7. 如果发生hash碰撞,有什么方法可以解决?
    8. 各种类型的锁?
    9. synchronize和lock?
    10. hashTable的数据结构?
    11. 线程安全的map即HashTable和CurrentHashMap,底层的线程安全是如何实现的?
    12. hashCode的原理?
    13. 什么情况下需要重写类的hashCode()方法?什么时候需要重写equals()方法?
    14. hashmap添加元素,如果通过hash值得到的位置如果有元素,哪一种情况会取代所在的元素?
    15. HashMap添加元素,如果是所得的桶数组的位置有值。该值则被添加到链表尾端,为什么会是尾端?
    16. ArrayList和hashmap底层结构,以及CurrentHashMap解决了什么问题;
    17. Hashmap的是否线程安全?为什么是安全或者不安全?
    18. HashMap、HashTable以及ConcurrentHashMap的区别;
    19. volatile关键字的理解;用在哪些场景?
    20. 线程的理解以及其实现方式;
    21. 线程池的参数有哪些?实现原理;
    22. 线程同步方法有哪些?
    23. 缓存的原理?为什么要用缓存?为什么会比数据库查询快?
    24. 反射机制的理解;
    25. Object中的方法;
    26. String的toString()方法的实现?底层原理?
    27. NIO与IO的异同;
    28. 垃圾回收机制的理解;
    29. java8的新特性有哪些?如何使用?
    30. static关键字的场景和意义;(拓展:final)
    31. 如何理解事务?
    32. 虚拟机的内存结构;
    33. 动态代理的两种实现方式;
    34. 悲观锁和乐观锁的区别
    35. 如何解决跨域问题?
    36. xml文件解析方式有几种
    37. synchronize的锁的类型
    38. 秒杀系统的设计
    39. 分库分表
    40. Spring底层是如何实现的;
    41. Tomcat容器启动的时候,spring的启动流程;
    42. SpringAop除了动态代理,还用了其余的什么原理?
    43. rpc框架
    44. 事务的隔离级别和传播机制
    45. docker
    46. 高峰期如何进行分流

    高并发

    1. 造成线程安全的主要因素有哪些:
    2. 互斥锁是什么?java锁如何分类?
    3. 关于锁名词的分类
    4. 线程的创建方式;
    5. 三种创建方式分别有什么区别?(最终可以追究到最底层)
    6. 线程池的核心参数是哪些?分别表示什么意义?
    7. 通过线程池创建线程的流程是什么?
    8. Lock接口;
    9. synchronize和volitile的区别?
    10. 设计一个高并发的网站通用的技术有哪些?
    11. CAS是什么?
    12. JUD是什么?

    分布式

    1. 关于分布式的一些基本概念
    2. springboot与spring相比优势是什么?
    3. springboot自动配置的原理是什么?
    4. 如果自己集成一个jar包到springboot中,该如何做?
    5. 如何解决分布式事务问题?

    web

    1. servlet的实现以及其中的方法;

    2. token生成的原理;

    常用的设计模式

    关于前端

    1. 闭包的理解;
    2. js函数的理解;
    3. 如何优化前端?

    关于框架

    spring

    1. springIOC的理解;

    2. spring是如何通过xml配置或者注解配置生成实例对象的?

    3. springIOC的java底层原理;

      反射

    4. springAOP的理解;

    5. springAOP的底层的实现原理;

    6. spring如何解析视图;

    7. spring的常用注解;

    8. springmvc和Struts2的差异;

    9. 如何控制事务;

    10. 事物的隔离级别和传播机制;

    11. Spring BeanFactory与FactoryBean的区别;

    12. springAOP的应用场景;

    mybatis

    1. mybatis的结构?

    2. 配置文件如何配置?

    3. mybatis处理多个参数的几种方式?

    4. 占位符有几种?区别是什么?

    5. 一级缓存和二级缓存的区别?

    6. Mybatis的类型转换器?

    7. mybatis接口没有实现类,他是如何操作数据库的?

    hibernate

    1. mybatis 与hibernate的对比;优势,劣势,原理,如何选择;
    项目 Mybatis Hibernate
    开发效率 较容易上手;需要手动管理sql 较难上手;无需管理sql,专注业务
    入门 简单 较难
    灵活性 sql更加灵活 几乎不用写sql,封装性较大
    性能 相对较高 相对较低
    日志系统 除了基本记录功能外,功能薄弱很多 志系统非常健全,涉及广泛,包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告等
    优化 更容易 更难
    自动性 半自动 全自动
    缓存 有更好的二级缓存机制
    移植性 移植性低(绑定了sql) 移植性高
    适用场合 1.有复杂的查询业务;2.无hibernate实践经验的 1.无复杂的查询业务;2.能够熟练应用hibernate的

    SpringBoot

    1. springboot与springmvc最大的优势在哪?
    2. 一个加了事务注解的“新增方法”,抛出异常,数据有没有添加成功?

    关于工具的使用

    1. git和svn的区别以及各自优势
    2. Jenkins的搭建和配置;
    3. maven是如何管理jar包版本的;

    ​​​

    关于数据库

    关系型数据库

    1. limit关键字从0到10与从100000到200000效率相差几个数量级,为什么?

    2. mysql的架构;

    3. 索引的原理;

    4. 索引的选取原则(通用):

    5. 为什么索引导致查询效率高?操作数据效率低?

    6. 索引的底层结构是什么?是如何实现的?

    7. 哪些查询会用到索引?哪些查询用不到索引?

    8. 索引类型?

    9. 聚集索引和非聚集索引

    10. 聚集索引的优缺点

    11. mysql索引的数据结构

    12. 数据库的隔离级别分别是什么?

    13. sql的优化方案;

    14. left join 与 inner join的差别;

    15. mysql的存储引擎MyIsam和InnoDB的区别;

    16. 主键和唯一索引有啥区别?

    17. 唯一索引能不能为空?

    非关系型数据库

    1. 常用哪些非关系型数据库?哪些场景会用到?
    2. redis如何进行持久化?

    关于网络协议

    1. UDP与TCP的异同;
    2. http的理解;
    3. webSocket编程;
    4. 什么是ajax?原生的ajax如何写?
    5. 比较get请求和post请求的异同;

    关于linux操作

    1. 常用的文件操作命令;
    2. 查看线程信息的命令;
    3. 查看内存的命令;
    4. 部署项目的命令;
    5. mac与Linux服务器文件传输命令;

    关于算法

    1. 常用的排序算法有哪些,分别如何实现(原理)?
    2. java中有哪些排序方式?原理是什么?
    3. 两个按降序排序的数组,用效率最高的算法组合成一个按降序排列的新数组;
    4. 回文字符串的个数;
    5. 一个若干字符串中括号的对数;
    6. 斐波那契的实现;
    7. 单向链表反转?
    8. 台阶问题?
    9. 输入一个字符串,输出一出现频率最高的字符,如果出现频率相同,则输出第一个字符;

    ​ ​

    关于数据结构

    1. 常用的数据结构;

    2. hashmap是什么数据结构?

    3. 堆、栈、队列的特性是什么?

    4. 树的应用场景是什么?

    5. 二叉树与红黑树的理解;

    关于所做项目

    1. 读写如何设置同步和异步;

    2. 如何处理排他处理?

      思路:数据库中存一个时间戳字段,每次加载页面的时候将时间戳带到页面隐藏域。向后台发送请求的时候将该时间戳与数据库中所存的时间戳对比,如果一致的话说明该数据没有被他人更新,如果不一致说明数据被他人更新了。

    3. 如何判断用户是否重复操作;

      可以有如下几种方案:

      ​ 1) 数据库层面:添加唯一性约束,通过账号、名称等信息进行唯一性约束;

      ​ 2) 页面层面:可以对操作按钮进行点击限制;

      ​ 3) 后端层面:提交时生成的token(一般是时间戳),存与session,提交到后端与之对比;

    4. 如何实现实时显示大计算的结果?

    5. 如何防止重复支付或者重复退款?

    6. 项目中如防止重复生成订单?

    7. 项目中遇到什么难题?是如何解决的?

    8. 下单时,如果在支付的时候,反馈给用户的是失败,然而调用第三方是成功,如何处理?

    9. 首先要缕清所有的流程,然后再拿出对应的数据表结构

    关于分布式

    1. 分布式框架有哪些?

    2. dubbo和spring cloud的比较;

    3. Restful风格的接口的理解;

    4. rpc框架有哪些?如何使用?

    5. rpc和http的对比;

    6. 负载均衡的理解;

    7. 常用的mq的种类;(补充)

    8. RabbitMQ的作用?

    PS(SongLea)

    1. 一个字符串里有多个左右括号 如何判断这些括号都是一一对应的
    2. 手写一个单例模式的代码
    3. 手写实现一个blockingqueue的实现
    4. 线程池的数量怎么确定,设多少?
    5. 手写怎样实现一个LRU的缓存
    6. lru:最少未使用算法
    7. redis与rabbitmQ部分知识
    8. 手写代码去实现一个读写锁
    9. 代理模式有什么好处,怎么实现的
    10. Linux常用命令,如查看磁盘空间,内存大小,CPU利用率,机器信息,Jvm上的内存占用信息。。。
    11. btree树,线程池,数据连接池,秒杀系统设计,回文字符串个数,线程如何变成运行态,事务的两种方式,垃圾回收机制,索引,hashmap,concurrenthashmap的结构
    12. 缓存穿透如何解决
    13. object有哪些方法,hashmap线程安全不
    14. hash一致性,JUC包与sync关键字锁的区别与理解
    15. aba的问题;
    16. 什么是乐观锁?什么是重入锁?
    17. CAS操作;
    18. 常用的集合框架的底层实现;
    19. 乐观锁和重入锁;
  • 相关阅读:
    软件工程概论作业二 电梯调度思路 信1205班 刘权毅 董文轩
    软件工程概论作业一 信1205班 20122561 董文轩
    团队开发第三天(董文轩,苏康奖,常晓杨,刘权毅,刘梦辉,刘若凡)
    软件工程概论作业三 信1205班 董文轩 刘权毅
    IDEA 搭建spring+maven+mybatis+mysql+junit+log4j2
    什么时候需要实现序列化Serializable
    IDEA如何查看maven依赖冲突
    Docker for windows : 安装linux
    Mybatis 分页
    POI java操作OFFICE产品
  • 原文地址:https://www.cnblogs.com/yanfei1819/p/10213673.html
Copyright © 2011-2022 走看看