搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > Fun言网 > 献上Java web后端开发面试经一篇

献上Java web后端开发面试经一篇

Fun言网 2018-11-01

互联网企业的面试过程中会遇到很多问题和知识点,这边整理了一下javaweb开发面试的经验,做了一个总结,为需要的人提供一点帮助。

Java 基础

  • -Java Object类有那些常见函数

  • -final,finally,finalize的区别

  • -重载和重写

  • -接口和抽象类的区别

  • -equals() 和 == 的区别

  • -String Integer , valueOf()函数

  • -JUC ( AQS CAS ) 重点

  • -Collection (List Map Set HashMap HashSet ConcurrentHashMap)

  • -IO,NIO,AIO

  • -Java 8 新特性 (Stream 函数式编程)

  • -Error,Exception

Java基础类主要是自己要使用得多,而且这部分推荐直接看Jdk里面的源代码,看完后对Java从最底层会有很深入的了解,为后面的打下坚实的基础。

Java Virtual Machine(Java虚拟机)

  • -Java 内存模型 (虚拟机栈,程序计数器,方法区,堆,本地方法栈)

  • -对象存活检查(根索引法,引用计数法)

  • -垃圾回收算法(标记清除,标记整理,复制算法,分代收集)

  • -垃圾收集器(Serial,Serial Old,parNew,Parallel Scavaenge,CMS,G1 )

  • -YoungGC FullFC

  • -类文件结构

  • -虚拟机类加载机制(双亲委派模型)

  • -虚拟机字节码执行引擎

Java虚拟机部分强烈推荐周志明《深入理解Java虚拟机》这本书。这本书如果Java 基础不是很好刚开始看确实晦涩难懂。但是需要反复看反复看。把很多东西弄懂了之后,以后再遇到Java棘手问题可以从本质上去排查。

算法

  • -链表操作(循环链表找开始点,反转链表,两个链表公共节点)

  • -树操作 (二叉查找,二叉树反转,二叉树深度,共同父节点,树的遍历)

  • -数组操作 (基本的排序算法,查找)

  • -图(DFS 和 BFS )

  • -动态规划 (背包问题,斐波拉契数列)

  • -模拟数学题

算法部分推荐使用LeetCode在线编程,可以快速的提高手写代码的能力。推荐只需要完成”Top 100 Interview”的问题就好了。算法不会超过leetcode hard模式,不然面试官也很难肉眼看出你的代码是否有问题了

网络

  • -TCP的三次握手,四次挥手

  • -HTTP的报文结构,分为几部分

  • -一次完整的HTTP请求是怎么样的

  • -Session和Cookie的区别及联系

数据库

  • -常见的日志类型及作用

  • -ACID

  • -索引 (B+ Hash)

  • -触发器,视图

  • -范式

  • -连接

  • -分库分表

  • -慢查询

  • -Innodb和MyISAM的区别

  • -聚集索引

  • -SQL的优化策略

  • -索引选取的原则,联合索引

  • -事务隔离级别

现在的一种常见的考察方式是给你一个应用场景,由你自己去设计数据库的表。然后给你一个需求让你写出SQL语句,再往上让你设计出合理的Java业务逻辑代码。
例:

  • 1.设计一个类似于今日头条的评论系统

  • 2.设计一个电商的转账和下订单系统

框架

  • -Spring-boot Spring-cloud

  • -Hibernate or Mybatis

  • -Spring(DI AOP 事务传播机制 bean)

分布式

  • -分布式锁原理

  • -ACID,CAP和BASE理论

  • -一致性协议 2PC,3PC

  • -Dubbo的架构和原理

项目

项目这部分主要是对着你自己所做的项目来进行详细的介绍了。面试官会跟随你的项目进行往深度的去问。一定要对自己的项目有着非常深刻的认识。最好自己可以背着画出架构图然后把每一个细节都了解清楚

常用服务

  • -Redis

  • -Kafka

  • -RabbitMQ

  • -Mysql

计算机基础

  • -计算机网络

  • -操作系统

  • -数据结构

  • -前端知识

智力题

  • -洗牌算法

  • -100G的数里面找出最大的100个

  • -两个1T的文件做匹配,内存有限

  • -ID生成器,线程安全

  • -缓存穿透,缓存击穿,缓存雪崩

智力题一般考察你在遇到问题的思维敏捷程度,一般你可以先给一个时间复杂度慢的算法,然后再优化时间复杂度。总之就是要做到又省时间又省资源的去解决问题就是你最好的答案,可以天马行空的去设想,只要能够说得出你的理由。

架构设计

  • -如何设计一个分布式Session框架

  • -如何设计一个购物商城

  • -如何设计商城的秒杀模块

  • -如何设计日志系统


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《献上Java web后端开发面试经一篇》的版权归原作者「Fun言网」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注Fun言网微信公众号

Fun言网微信公众号:gh_fa6e12a0abac

Fun言网

手机扫描上方二维码即可关注Fun言网微信公众号

Fun言网最新文章

精品公众号随机推荐

上一篇 >>

Netty笔记(一)