Java senior software engineer interview syllabus

If you want to apply for the position of senior development engineer, it is not enough to only know the basic knowledge of Java. You must also know common data structures, algorithms, networks, operating systems and other knowledge. Therefore, this article will not explain the specific technology. The author summarizes the experience of applying for major companies and organizes a large company's assessment outline for the position of Java senior development engineer, hoping to help those who need it.

At present, there are books similar to "Java XX Collection" on the market, and the content in the books focuses on explaining the most basic parts of Java. The most serious thing is that there are a lot of wrong contents, which are very misleading. In addition, there are a variety of Java interview questions on the Internet , many of which focus on the Java language. In fact, if you want to apply for the position of senior development engineer, it is not enough to only know the basic knowledge of Java. You must also know common data structures, algorithms, networks, operating systems and other knowledge. Therefore, this article will not explain the specific technology. The author summarizes the experience of applying for major companies and organizes a large company's assessment outline for the position of Java senior development engineer, hoping to help those who need it.

1 Java Basics

1.1 Collection and Map

(1) Master the inheritance system of Collection and Map.

(2) Master the characteristics and implementation principles of ArrayList, LinkedList, Vector, Stack, PriorityQueue, HashSet, LinkedHashSet, TreeSet, HashMap, LinkedHashMap, TreeMap, WeakHashMap , EnumMap, TreeMap, and HashTable.

(3) Master the implementation principles and applicable scenarios of CopyOnWriteArrayList, CopyOnWriteArraySet, and ConcurrentHashMap.

1.2 I.

(1) Master the inheritance system of InputStream, OutputStream, Reader, and Writer.

(2) Master byte streams (FileInputStream, DataInputStream, BufferedInputStream, FileOutputSteam, DataOutputStream, BufferedOutputStream) and character streams (BufferedReader, InputStreamReader, FileReader, BufferedWriter, OutputStreamWriter, PrintWriter, FileWriter), and use them proficiently.

(3) Master NIO implementation principles and usage methods.

1.3 Exceptions

(1) Master the Throwable inheritance system.

(2) Master the abnormal working principle.

(3) Understand common checked exceptions (such as FileNotFoundException), unchecked exceptions (such as NullPointerException), and errors (such as IOError).

1.4 Multithreading

(1) Master the characteristics and application scope of the three types of thread pools that can be created by Executor s (JAVA8 adds one, a total of four types).

(2) Master the multi-thread synchronization mechanism and use it proficiently.

1.5 Socket

(1) Master the principle of Socket communication.

(2) Proficient in programming with multi-threading combined with Socket.

2 Java Virtual Machine

2.1 JVM memory area division

(1) Master the functions and basic principles of program counter, heap, virtual machine stack, local method stack, method area (removed in JAVA8), and metaspace (added in JAVA8).

(2) Master the division of the heap: the role and working principle of the new generation (Eden, Survivor1, Survivor2) and the old generation.

(3) Master the setting and tuning of JVM memory parameters.

2.2 Class loading

(1) Master the loading stage of the class: loading, linking (verification, preparation, parsing), initialization, use, and unloading.

(2) Master the classification of class loaders and their applications: startup class loaders, extension class loaders, application class loaders, and custom loaders.

3 J2EE

(1) Master JSP built-in objects, actions and related features and working principles.

(2) Master the characteristics and working principle of Servlet.

(3) Master the IOC and AOP implementation principles of the Spring framework (reflection and dynamic proxy).

(4) 至少掌握一个MVC框架(Spring MVC,Struts等)的工作原理,并熟练运用。

(5) 至少掌握一个ORM框架(Hibernate,MyBatis等)的工作原理,并熟练运用。

4 数据结构与算法

(1)掌握线性表和树的特点并熟练运用。

(2)掌握常用排序和查找算法:插入排序(直接插入排序、希尔排序)、选择排序(直接选择排序、堆排序)、交换排序(冒泡排序、快速排序)、归并排序,顺序查找、二分查找、哈希查找。

(3) 熟练运用常见排序和查找算法思想解决编程问题。

(4)了解几大基本算法:贪心算法、分治策略、动态规划。

5 计算机网络

(1)掌握网络的分层结构,及每层的功能特点。

(2)掌握TCP/IP的通信原理(三次握手、四次挥手)

6 数据库

(1)掌握复杂的SQL语句编写。

(2)掌握数据库的优化(SQL层面和表设计层面)。

(3)至少掌握一款数据库产品。

(4)熟悉高并发、大数据情况下的数据库开发。

7 Web技术

(1)掌握AJAX的工作原理。

(2)至少熟悉一款JS框架(比如JQuery)。

设计模式

(1)熟悉常见的设计模式。

(2)会将设计模式理论应用到实际开发中。

9 Linux

(1)熟练运用Linux常见命令。

(2)熟悉Linux操作系统基本概念及特点。

(3)熟悉Shell脚本。

10 操作系统

(1)掌握操作系统的进程管理。

(2)了解操作系统的I/O。

11 正则表达式

(1)掌握常见正则表达式符号。

(2)熟练运用正则表达式解决实际问题(比如匹配电话号码、邮箱、域名等)。

\1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加群。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加群。

5.群号744677563Java高级开发

6.阿里Java高级大牛直播讲解知识点,分享知识,上面五大专题都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325732486&siteId=291194637