主页 > 学生园地 >
 
图文资讯
学生园地

2019年苏州吴中高级技工学校专业课程介绍

学生园地 | 2019-03-18 | 标签:苏州吴中高级技工学校
一.学校介绍
苏州吴中高级技工学校,开设会计,有机化学 , 农业培制,化工燃料,机器建模,机械工程,网络架构,网络编程,IT程序,web前端工程师,建筑工程师,电子建模,机械机器工程,等专业课程,学年制为4年,面向各学校招生,欢迎各校学子来我校学习。

二,IT专业学习
1. AOP与IOC的概念(即spring的核心)

a) IOC:Spring是开源框架,使用框架可以使我们减少工作量,提高工作效率并且它是分层结构,即相对应的层处理对应的业务逻辑,减少代码的耦合度。
而spring的核心是IOC控制反转和AOP面向切面编程。IOC控制反转主要强调的是程序之间的关系是由容器控制的,容器控制对象,控制了对外部资源的获取。

而反转即为,在传统的编程中都是由我们创建对象获取依赖对象,而在IOC中是容器帮我们创建对象并注入依赖对象,正是容器帮我们查找和注入对象,对象是被获取,所以叫反转。

b) AOP:面向切面编程,主要是管理系统层的业务,比如日志,权限,事物等。AOP是将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为切面(aspect)。

切面将那些与业务逻辑无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

温馨提示:可以研究一下AOP切面编程方法,以及切入点等。

2.设计模式知道有哪些?

单例模式
优点:

只有一个实例,减少了内存开支;

可以避免对系统资源的多重占用;

可以在系统中设置全局的访问点,优化和共享资源访问;



缺点:

没有接口,扩展困难;

对测试开发不利;



应用场景:

要求生成唯一序列号的场景;

需要一个共享访问点;

创建一个对象需要消耗过多的资源时

需要定义大量的静态常量和静态方法时(也可直接声明为static的方式);



工厂方法模式



优点:

良好的封装性,代码结构清晰;

扩展非常好;

屏蔽产品类;

应用场景:

是new一个对象的替代品;

需要灵活的,可扩展的框架时;

使用在测试驱动开发的框架下;



抽象工厂模式
优点:

封装性;

产品族内部的约束为非公开状态;



缺点:

产品族扩展困难;

温馨提示:面试的时候一般会问项目中那里用到了这些模式,请举例说一下实现了什么功能等。

3.如何知道是哪一个客户端的机器正在请求你的 Servlet?

ServletRequest 类可以找出客户端机器的 IP 地址或者是主机名。getRemoteAddr()方法获取客 户端主机的 IP 地址,getRemoteHost()可以获取主机名。看下这里的例子。

4.JSP 请求是如何被处理的?

浏览器首先要请求一个以.jsp 扩展名结尾的页面,发起 JSP 请求,然后,Web 服务器读取这 个请求,使用 JSP 编译器把 JSP 页面转化成一个 Servlet 类。需要注意的是,只有当第一次请 求页面或者是 JSP 文件发生改变的时候 JSP 文件才会被编译,然后服务器调用 servlet 类,处 理浏览器的请求。一旦请求执行结束,servlet 会把响应发送给客户端。这里看下如何在 JSP 中获取请求参数。

5.死锁的产生的一些特定条件

互斥条件:进程对于所分配到的资源具有排它性,即一个资源只能被一个进程占用,直到被该进程释放 。

请求和保持条件:一个进程因请求被占用资源而发生阻塞时,对已获得的资源保持不放。

不剥夺条件:任何一个资源在没被该进程释放之前,任何其他进程都无法对他剥夺占用。
循环等待条件:当发生死锁时,所等待的进程必定会形成一个环路(类似于死循环),造成永久阻塞。



6. 如何避免?

加锁顺序:

当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。
当然这种方式需要你事先知道所有可能会用到的锁,然而总有些时候是无法预知的。



加锁时限:

加上一个超时时间,若一个线程没有在给定的时限内成功获得所有需要的锁,则会进行回退并释放所有已经获得的锁,然后等待一段随机的时间再重试。
但是如果有非常多的线程同一时间去竞争同一批资源,就算有超时和回退机制,还是可能会导致这些线程重复地尝试但却始终得不到锁。

死锁检测:

死锁检测即每当一个线程获得了锁,会在线程和锁相关的数据结构中(map、graph等等)将其记下。除此之外,每当有线程请求锁,也需要记录在这个数据结构中。

死锁检测是一个更好的死锁预防机制,它主要是针对那些不可能实现按序加锁并且锁超时也不可行的场景。

7.内部类和静态内部类的区别

内部类:
内部类中的变量和方法不能声明为静态的。

内部类实例化:B是A的内部类,实例化B:A.B b = new A().new B()。
内部类可以引用外部类的静态或者非静态属性及方法。

静态内部类:

静态内部类属性和方法可以声明为静态的或者非静态的。

实例化静态内部类:B是A的静态内部类,A.B b = new A.B()。

静态内部类只能引用外部类的静态的属性及方法。

inner classes——内部类

static nested classes——静态嵌套类


其实人家不叫静态内部类,只是叫习惯了,从字面就很容易理解了。

内部类依靠外部类的存在为前提,而静态嵌套类则可以完全独立,明白了这点就很好理解了。

8.非静态内部类中的变量和方法不能声明为静态的原因

静态类型的属性和方法,在类加载的时候就会存在于内存中。使用某个类的静态属性和方法,那么这个类必须要加载到虚拟机中。但是非静态内部类并不随外部类一起加载,只有在实例化外部类之后才会加载。

我们设想一个场景:在外部类并没有实例化,内部类还没有加载的时候如果调用内部类的静态成员或方法,内部类还没有加载,却试图在内存中创建该内部类的静态成员,就会产生冲突。所以非静态内部类不能有静态成员变量或静态方法。

9.Enumeration和Iterator的区别

java中的集合类都提供了返回Iterator的方法,就是迭代器,它和Enumeration(枚举)的主要区别其实就是Iterator可以删除元素,但是Enumration却不能。

使用Iterator来遍历集合时,应使用Iterator的remove()方法来删除集合中的元素,使用集合的remove()方法将抛出ConcurrentModificationException异常。

Enumeration接口的功能和Iterator接口的功能是重复的。此外,Iterator 接口添加了一个可选的移除操作,并使用较短的方法名。新的实现应该优先考虑使用Iterator接口而不是Enumeration接口。
Enumeration速度是Iterator的2倍,同时占用更少的内存。但是,Iterator远远比Enumeration安全,因为其他线程不能够修改正在被iterator遍历的集合里面的对象

今日题目:Dubbo相关    难度指数:★★  
Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉。
下面我为大家准备了一些 Dubbo 常见的的面试题,总结给大家,希望对大家能有所帮助(答案将在下期推送)。
1、Dubbo是什么?

2、为什么要用Dubbo?

3、Dubbo 和 Spring Cloud 有什么区别?

4、dubbo都支持什么协议,推荐用哪种?

5、Dubbo需要 Web 容器吗?

6、Dubbo内置了哪几种服务容器?

7、Dubbo里面有哪几种节点角色?

8、Dubbo默认使用什么注册中心,还有别的选择吗?

9、Dubbo有哪几种配置方式?

10、Dubbo启动时如果依赖的服务不可用会怎样?

11、Dubbo可以对结果进行缓存吗?

12、Dubbo服务之间的调用是阻塞的吗?



上一篇:苏州吴中学子注意了_2019考研复试全程要录音录像 下一篇:2019苏州技师学院赛队风采