Java Web架构知识整理——记一赖阿里面试更

惭愧,从平不善电面说于。我个人以某国企做同样叫做软件设计师,国企大家都理解的,待遇一般以没有啥意思,做的主旋律基本还是操作系统、驱动及工具软件的开支,语言基本还是C/C++。最近呢想跳槽,刚好有幸得到了同一浅阿里之面试时,于是便试了碰。

  首先是电话面试,当时着上班,人多口杂,好不容易找了单尚未人之地方开面试。面试的矛头是Java
Web,面试官好nice,跟朋友同样,一开始咨询了头比较基础的事物,比如hashmap/hashtable的区别及优缺点,我报得还实施,而且对于原理的物还算是讲的比透。

  Java
Web的面试自然就会见咨询到servlet,对于java多线程的事物或那么,原理性的物同脚的编制都比较清楚,面试官也尚算是满意,但向上重叠就非是自擅长的了。当让咨询到AOP时,竟然语塞、哑口无言,因为向忘了凡干吗的了。本科的时光已开过Web服务器类似之课程设计,其实产生硌过,然而读研的时段方向最好偏,过于底层,基本为就是从未开过Java
Web方向相关的类。纯粹是吃对互联网的热情和有网上拥有一样追求的爱人,从读研到工作同样年,依然坚持关注互联网系技术。

  尽管新兴的题材不怎么没答上来,但面试官还是让了自己同糟糕面试的机会,11.20日由北京飞武汉与专场面试。一面依旧先是有些基础之题目,然后形容了个别独算法程序,字符串转换相关的,都很简单的,虽然第二只写当时从不高速反应过来。一面之进程遭到,发现以前掌握的一部分事物确实发生多都忘了,比如UML的类图关系怎么画,数据库建表均不克第一时间写针对性,再依Http协议302/301是呀意思等。我本认为会问许多以及Java
Web框架相关的问题,所以电面后一样人数暴,不顶同样礼拜把《Spring in
Action》、《Struts in
Action》还有Hibernate的一模一样本电子书与《深入剖析Java
Web》全刷了扳平尽,然而并不曾问尽多框架相关的问题。后来算自由发挥,就拿温馨以前开项目时碰到的JVM调优过程讲了道。

  二面面对片单面试官,基本无算是技术面,主要对着简历问了一部分做了之品种相关题材,以及个人经历。由于自己种阅还算是丰富,做了之东西还算是扎实,所以这个不算什么问题。后来以咨询了投机对自己之稳定以及对于B2B业务有什么观点以及base的问题,这就算无多说了。有一个问题却难了我转,当然也便1秒钟。根据本人之简历,我举行系统以及底的物又切合,所以面试官问我是否情愿去阿里云,我知阿里云是潘爱民先生带的,以前还与潘爱民先生共同过影,相信广大人口且扣留了《程序员的自己修养》,从中受益了。但我的答复是:“我委当这个方向呢对,也充分向往潘先生,但既然我来面B2B
Java Web相关的职位,说明我再次倾向被做偏应用方向的物。”

  大概是以自发部分同学和爱人于阿里,自己也正如关心阿里,对阿里底技能框架还算比较了解,所以二面比单情况好过多,感觉面试官还是好满意的,只不过提了一些即是自刚刚工作同年差不多,觉得年头少了接触。

  终面完毕,和简单次面试的面试官都于好招呼后返回住的酒楼睡觉了平等睡醒,本来有些打鼓,结果不久晚上时,面试官一个电话了吧我状态尚不易,以后就是终于同事了,预计会同样周到里通知。听到此信息,当然是相当兴奋,在朝着面试官道谢后,和武汉底同室共同吃了暂停饭,心情大舒畅。

  现在理应算在等最后的offer吧,希望自己好运。

  “你念一宗技术之最佳时机是三年前,其次是当今。”这话从来很管用。经过这次面试,觉得要整治下Java
Web相关的素材,以便自己提高或重新快适应可能面临的初的干活。

  首先谈谈Java
Web需要控制如何东西。这里是有知识点的征集,暂不开详细说明,欢迎各位博友补充指正。

1.底层

Java语言相关的即背着了,首先是JVM的布局和办事规律。比较关键之是Java内存模型,各种GC算法,Classloader的加载原理等。个人对根的有物还算比较了解,所以只是大多纠结,实际上程序编译链接过程以及二进制文件的拍卖或大值得研究之。

JVM监控和调优。作为一个开发人员并不一定需要特别熟悉JVM调优的办法,但假如具有JVM监控以及调优的力量,将吃您对程序运行状况了如指掌,对于问题一定也会趁机得几近。

Java多线程。对于线程安全之亮,以及怎样在融洽之先后中避免多线程造成的不均等问题等。

I/O。Java中不时提到的是BIO/NIO,即阻塞型I/O与非阻塞型I/O,其实并不难理解,结合Linux中的同步I/O和异步I/O的落实原理,基本都是相通的,每种I/O方式解决之题目,又有什么问题,为什么采取epoll。

2.Servlet

  Servlet是运作于服务端的java程序,一般实现团结之Java服务端应用还起HttpServlet类继承,然后实现和谐之init
| doGet | doPost |
service方法。Servlet的生命周期从其加载开始,首先实施同样差初始化,调用init方法,之后虽只是运行自身的劳务,当生命周期结束时,调用destroy方法回收资源,结束劳动。

  仅了解原理当然是不够的,还要实战能力,在IDE中描写写简单的代码谁都见面,然而真正被一个顺序会运转起来呢还需要点其他的事物,这里自己乘的凡Servlet的容器。servlet的容器有过多,常用的因Tomcat为例,安装好Tomcat后,在开发时要包含进Tomcat的lib。IDE确实惯坏了成千上万总人口,目录如何组织,程序如何编译、如何安排这些问题且于IDE屏蔽掉了,如果要针对性整来较透的打听,建议任何从命行动手。

  具体但参考:《Servlet与JSP核心编程》。

3.框架

  Java
Web开发之使用的框架的多简直叫人发指,而且因为本的更新换代致的题材啊是层出不穷。然而就也是Web技术不断演变的结果,要么捎接受,要么引领节奏。

Spring

  Spring是一个强劲而同时“轻量级”的Java开发框架,之所以打引号是以感到并无是那轻量。Spring的重要目的在于简化Java应用开发,以安排方式代替硬编码方式的编程,模块解耦,其架构使下图所出示。包括了数额访问、远程通信、AOP、核心容器等一些。

Figure 1 Spring体系架构

  Spring的中坚重点出三触及:

IoC

:反转控制。

  反转控制就是依以控制权由接近中抽离到容器,由容器类的实例化及动作进行配置管理。

Dependency-injection:依赖注入

  对象的倚重关系由负协调系统中各个对象的老三正值组件在创建对象时设定。对象非活动创建或者管理它们的依关系,依赖关系让自动注入到要她的靶子吃。通过参数和部署会体会出“注入”这个词在此间有差不多像。依赖注入的不过可怜益虽是松耦合。不需要重新接近里去同一定的近乎进行绑定,而是将片依靠关系因为参数的形式注入到类似中。

Aspect Oriented Programming

:面向切向编程

  于软件开发中,分布为下中几近地处的意义让叫作横切关注点。这些横切关注点往往与作业逻辑是互为分离之,将这些横切关注点与工作逻辑相分离正式AOP要缓解之。AOP编程能够被遍布在运各处的职能分离出来形成可选用的机件。是高内聚低耦合的以一个体现,将通用实现模块和中心工作模块相分离。

  具体参考:《Spring In Action》

Hibernate

  数据持久化框架其实呢出多,需要掌握的不单是Hibernate,只是以Hibernate在此前的铺面级以使得的比较多要一度,另外MyBatis也占有相当重要之份额。Hibernate是一个机动的持久化框架,并无是那便民,所以多开发者重新赞成被下MyBatis,淘宝就是如此。

  Hibernate的行事流程:首先通过configuration对象读取配置文件;解析映射信息,创建StandardSessionFactory;调用openSession打开session;创建工作transaction,之后进展持久化操作;完成后交付业务,关闭session,关闭sessionFactory。

Figuer 2 Hibernate工作流程

  要明了ORM的观点:ORM意为目标关系映射。是如出一辙栽为缓解程序的面向对象模型与数据库关系模型互不匹配问题之技能。

  hibernate中比较根本之凡目标的4栽状态转换与标准。分别是transient瞬时态、persistent持久态、detached游离态和移除态,状态转换如下:

Figure 3 Hibernate对象状态转换图

Struts 2

  Struts出现的顶早,也是考虑提供者之一,从名字就可以看得出其重要性,其计划目的是为简化Java开发,统一工作切面化。

  Struts最根本的地方在于Action的行,拦截器的原理、valuestack及OGNL。

  具体参考:《Struts in Action》

4.HTTP

  这个不用多讲,太重要了,作为Web开发者,如果未特别熟悉Http将见面是均等码特别烦的从。

Http的报头格式

Http协议的各种返回码是呀意思

https如何贯彻

B/S架构的做事原理

Cookie和Session的原理

restful API

5.设计模式

  这里虽未列举23栽模式了,个人认为纯粹看开上《设计模式》并没呀用,要以实质上用被遇见,并且大多问问几只为什么,而且好写代码时亦可生以设计模式的发现才能够针对各种设计模式有还甚的领悟。

  当然Web开发多不止如此把东西,我此少为只好先排些重要的。应用开发后,还有配备之题材,因此而见面干CDN和负载均衡等题材不怕再度复杂了……

  另外在Web开发之历程中,要养成好的出习惯,比如开前能熟练地以UML类图MyBatis,交互图等,这将避免你犯很多荒谬。感谢面试官轻虐,自己认为还有多休扎实的地方,还索要持续全力才会对得打这次时机。

作者:享飞的鱼

链接:https://juejin.im/post/5a45ff4b6fb9a0451b04e052

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

网站地图xml地图