面试、被面试的技术总结

初级、中级

类型

团队

问题

期望

框架相关

后端开发

  • 框架怎么配置?

  • 框架解决什么问题?

  • 框架内部实现的原理是什么?

  • 知道怎么使用框架

  • 知道在什么样的场景下使用什么框架

  • 对于常用框架,知道内部的实现原理

JVM相关

后端开发

  • 对象的初始化过程是怎么样的?

  • HotSpot的类加载机制是怎么样的?

  • HotSpot的内存可以分为哪些区域?哪些是线程私有的?

  • HotSpot的堆内存是如何分布的?知道哪些GC算法,分别是针对哪些类型的?

  • 能够比较详细地讲述对象的初始化过程(类加载、类变量、类初始化块、父类的构造方法、构造方法)

  • 了解双亲委派的加载机制,以及这么设计背后的原因?

  • 能够比较全面的描述不同区域里面的存放内容和哪些是线程私有,哪些是线程公用的

  • 能够知道分代的内存分布机制,并知道不同代之间的特征,针对不同代的GC算法,以及这么设计背后的原因

数据库

后端开发

  • 怎么优化SQL?

  • 在什么情况下会建索引?

  • 建索引有哪些注意点?

  • 数据库存储引擎通过什么数据结构实现索引的?
     

  • 知道常用的SQL优化手段

  • 知道建索引的目的

  • 知道建索引的技巧(字段区分度,字段顺序)

  • 知道不同存储引擎维护索引数据的数据结构,知道背后的原因是加分项

并发

后端开发

  • 一般通过什么手段来提高性能?

  • 什么情况下用线程池?

  • 不同场景下使用什么类型的线程池?

  • JDK的线程池几个参数具体代表什么意义?

  • 一般通过什么手段来解决并发问题?

  • synchronize和lock,volatile之间的区别?

  • JVM是怎么实现synchronize这个关键字的?
     

  • 知道一些常用手段(缓存,数据库索引,多线程,异步化),知道端到端的看问题是加分项

  • 知道线程池背后解决的问题

  • 知道JDK不同线程池类型解决的问题

  • 知道任务提交到线程池以后,线程池的处理方式

  • 知道synchronize,锁,volatile

  • 知道锁升级的详细过程

设计

后端开发

  • 你认为什么样的代码算好代码?

  • 你做代码设计是否有原则,原则是什么?

  • 有自己总结的一些点,能归纳提炼是加分项

  • 知道常用原则并有例子佐证

服务化

后端开发

  • 是否有了解SOA或微服务?

  • 对SOA或微服务有框架性的认知,了解背后解决的问题是加分项

沟通能力

后端开发

  • 自我介绍

  • 问题回答

  • 能够耐心听讲

  • 能够快速把握住问题重点或者通过简单的引导能够把握问题并能比较清楚地表达自己想表达的内容

自驱能力

后端开发

  • 是否对自己负责的业务有比较清晰的了解?

  • 在使用框架的时候有没有去研究内部的实现?

  • 会不会做总结?怎么做总结?

  • 能够在业务开发的过程中主动思考并总结

  • 能够在业务开发之外主要专研技术(例如:框架源码,知识广度)

  • 能够明白总结的目的,有自己的总结方法并有实例作证。

学习能力

后端开发

  • 看过什么书,印象深的点是什么?

  • 如何自我学习?

  • 是否知道互联网后端开发所需要具备哪些专业能力?自己是如何掌握的?

  • 能够谈自己对看书后的理解,能够把握书的重点,一定的实践验证是加分项

  • 能够说出自己的学习方法,有亮点的学习方法是加分项

  • 能够比较全面地回答哪些专业能力,有比较实际地落地执行方案是加分项

跳槽原因

后端开发

  • 为什么跳槽?

  • 为什么选择公司?

  • 决策是经过慎重考虑的

  • 对于公司是有认可度的

高级、资深

类型

团队

问题

期望

框架相关

后端开发

  • 框架怎么配置?

  • 框架解决什么问题?

  • 框架内部实现的原理是什么?

  • 知道怎么使用框架

  • 知道在什么样的场景下使用什么框架

  • 对于常用框架,知道内部的实现原理

JVM相关

后端开发

  • 对象的初始化过程是怎么样的?

  • HotSpot的类加载机制是怎么样的?

  • HotSpot的内存可以分为哪些区域?哪些是线程私有的?

  • HotSpot的堆内存是如何分布的?知道哪些GC算法,分别是针对哪些类型的?

  • 什么样的场景会出现OOM?通过什么方式去定位问题?

  • JVM的最大线程数由哪些因素决定?

  • 能够比较详细地讲述对象的初始化过程(类加载、类变量、类初始化块、父类的构造方法、构造方法)

  • 了解双亲委派的加载机制,以及这么设计背后的原因?

  • 能够比较全面的描述不同区域里面的存放内容和哪些是线程私有,哪些是线程公用的

  • 能够知道分代的内存分布机制,并知道不同代之间的特征,针对不同代的GC算法,以及这么设计背后的原因

  • 能够归纳性地提炼出现OOM的原因,以及常用的定位问题的工具

  • 能够比较全面地考虑各种因素,不仅限于JVM本身是加分项

数据库

后端开发

  • 怎么优化SQL?

  • 在什么情况下会建索引?

  • 建索引有哪些注意点?

  • 数据库存储引擎通过什么数据结构实现索引的?

  • 数据库的事务隔离级别有哪些?

  • 不同的隔离级别适合什么样的场景?

  • 什么情况用NoSQL?

  • 数据库怎么做数据同步?

  • 为什么要读写分离?

  • 知道常用的SQL优化手段

  • 知道建索引的目的

  • 知道建索引的技巧(字段区分度,字段顺序)

  • 知道不同存储引擎维护索引数据的数据结构,知道背后的原因是加分项

  • 知道某种存储引擎的事务隔离级别,最好以示例说明

  • 知道不同隔离级别的适用场景

  • 知道关系型数据库和NoSQL使用场景的差别

  • 知道常用的同步方案(例如:基于binlog)

  • 知道读写分离的意义?

高并发

后端开发

  • 一般通过什么手段来提高性能?

  • 什么情况下用线程池?

  • 不同场景下使用什么类型的线程池?

  • JDK的线程池几个参数具体代表什么意义?

  • 一般通过什么手段来解决并发问题?

  • JVM是怎么实现synchronize这个关键字的?

  • synchronize和lock,volatile之间的区别?

  • IO模型有几种?

  • 知道一些常用手段(缓存,数据库索引,多线程,异步化),知道端到端的看问题是加分项

  • 知道线程池背后解决的问题

  • 知道JDK不同线程池类型解决的问题

  • 知道任务提交到线程池以后,线程池的处理方式

  • 知道synchronize,锁,volatile

  • 知道锁升级的详细过程

  • 知道synchronize,锁,volatile的适用场景

  • 能够比较全面地了解IO模型的类型,知道每种IO模型的具体实现原理是加分项

高可用

后端开发

  • 通过什么手段做到高可用?

  • 通过什么手段做降级?

  • 通过什么手段做限流?

  • 通过什么手段防雪崩?

  • 知道常用手段(降级,限流,资源隔离)

  • 知道常用降级手段,能从端到端角度看是加分项

  • 知道常用限流算法(漏桶算法,令牌桶算法)

  • 知道缓存失效后数据库雪崩的解决方案,有实例操作是加分项

一致性

后端开发

  • 一致性有几种级别或模型?

  • 什么场景适合用什么级别的一致性?

  • 有什么手段来解决分布式环境下的不一致性问题?

  • 知道哪些分布式一致性协议?

  • 知道一致性有不同级别,和不同级别一致性的定义

  • 能举例说明一些常用的一致性场景

  • 知道不同一致性要求级别下的常用解决手段以及实现成本,有实例佐证是加分项

  • 知道常用的一致性协议,了解原理是加分项

设计

后端开发

  • 拿到一个需求后怎么做系统设计?

  • 系统设计的原则是什么?

  • 有自己总结的一套方法论去做系统设计

  • 知道常用原则并有例子佐证

服务化

后端开发

  • 怎么理解SOA或微服务?

  • 什么情况下做服务拆分?基于什么原则去做服务拆分?

  • 服务治理包含哪些内容?

  • 服务调用和消息有什么区别?

  • 服务调用和消息分别适合什么场景?

  • 知道SOA或微服务解决的问题

  • 知道服务拆分的具体原则,有具体实践是加分项

  • 知道服务治理的概念,和常用内容

  • 知道两者之间的区别

  • 知道两者之间的适用场景

沟通能力

后端开发

  • 自我介绍

  • 问题回答

  • 能够耐心听讲

  • 能够快速把握住问题重点或者通过简单的引导能够把握问题并能比较清楚地表达自己想表达的内容

自驱能力

后端开发

  • 是否对自己负责的业务有比较清晰的了解?

  • 在使用框架的时候有没有去研究内部的实现?

  • 会不会做总结?怎么做总结?

  • 能够在业务开发的过程中主动思考并总结

  • 能够在业务开发之外主要专研技术(例如:框架源码,知识广度)

  • 能够明白总结的目的,有自己的总结方法并有实例作证。

学习能力

后端开发

  • 看过什么书,印象深的点是什么?

  • 如何自我学习?

  • 是否知道互联网后端开发所需要具备哪些专业能力?自己是如何掌握的?

  • 能够谈自己对看书后的理解,能够把握书的重点,一定的实践验证是加分项

  • 能够说出自己的学习方法,有亮点的学习方法是加分项

  • 能够比较全面地回答哪些专业能力,有比较实际地落地执行方案是加分项

跳槽原因

后端开发

  • 为什么跳槽?

  • 为什么选择公司?

  • 决策是经过慎重考虑的

  • 对于公司是有认可度的

猜你喜欢

转载自blog.csdn.net/jdzms23/article/details/82530210