取自文库的面试总结

参考地址:https://wenku.baidu.com/view/fe54feadbb0d4a7302768e9951e79b8969026844

java面试参考:https://www.cnblogs.com/jianmang/category/716009.html

IOC(控制反转(别名:依赖注入))原理: http://www.cnblogs.com/jianmang/articles/4947615.html

AOP(面向切面编程)原理:https://www.cnblogs.com/jianmang/articles/4947908.html

死锁的四个必要条件:

    1.互斥条件:每个资源要么分配一个进程,要么就是可用的,也就是说一旦分配给一个

进程,那么他就不可用。

    2.占有和等待条件:已经得到了某个资源的进程可以请求新的资源。

    3.不可抢占条件:已分配给一个进程的资源不能强制性被抢占,他只能被占有它的进程

显示释放。

    4.环路等待条件:死锁发生时,系统中一定有两个或两个以上的进程组成一条环路,该

环路中的每一个进程都在等待着下一个进程所占有的资源。

 

    产生死锁:

        N个哲学家面前都有一碗粉,哲学家需要两把叉子才能吃到粉,而每个哲学家面前只有一

吧叉子,哲学家有两种状态,进食和思考,当一个哲学家饿了的时候,会分两次拿起叉子,但不

分秩序,如果取到两根叉子,他就进食,进食完毕后进入思考状态。

    产生死锁的解法:

        当哲学家分别尝试拿起叉子的时候,如果叉子已经被使用,则进入阻塞,直到叉子空闲,当一个

哲学家拿到两把叉子,则进食,进食完毕后,放下叉子,进入思考状态;当所有哲学家都拿起一把叉子

的时候,就进入了死锁。

    产生饥饿的解法:

        当哲学家拿起左叉的时候,判断右叉是否可用,如果不可用,则放下叉子,进入等待,但如果所有的

哲学家都是拿起左叉,右同时放下左,如此往复,就会产生饥饿。

Tcp三次握手:1,客户端发送SYN报文段,指定要连接的端口和和初始序列号

                        2,服务器发送自己的SYN报文段作为相应,发送服务器初始序列号

                        3,客户端确认服务器SYN,返回确认号。

 

    三次握手的意义:让通信双方了解一个连接正在建立,并利用数据包承载特殊信息,交换序列号。

    socket编程:

6603bfd4ee7742c9c78b522add3f05fc7cd.jpg

TCP client:                                                                                TCP service:

1.socket()建立ssocket                                                                1.WSAStart()启动socket

2.connection()发出连接请求                                                       2.socket()创建socket

3.send()向socket写入信息                                                           3.bind()绑定到端口

4,。closesockrt();关闭连接                                                           4.listen()开始监听

                                                                                                   5. accept()等待客户连接

                                                                                                    6.send()/recv()从socket读取字符

                                                                                                    7.closesocket()关闭连接

 

面向对象的三大特征:封装,继承,多态

        面向对象就是对事物的划分,吧一个事物抽象成类,具体的吧一个事物的静态特征和动态特征抽象成属性和

方法,也就是吧一类事物的算法和数据结构封装在一个类中,程序就是多个对象和互相之间通信组成的。

        面向对象具有封装性,继承性,多态性,封装隐蔽了对象内部不需要暴露的细节,使得内部细节的变动跟外界脱离

,只依靠接口进行通信,封装性降低了编程的复杂性,通过继承,使得新建一个类变得容易,一个类从父类哪里获得

其非私有的方法和公用属性的繁琐工作交给了编译器。而继承和实现接口运行的类绑定所产生的多态,使得不同类所

昌盛的对象能够对相同的消息作出不同的反应,极大的提高了代码的通用性。    面向对象的特性特高了代码的重用性和

可维护性。

 

转载于:https://my.oschina.net/u/3788977/blog/2049966

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值