面试相关知识点

Java

面向对象

1、面向对象三大基本特征:封装、继承、多态。

2、封装:将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,让外部程序通过该类提供的方法	来实现对内部信息的操作和访问,提高了代码的可维护性;

3、继承:实现代码复用的重要手段,通过extends实现类的继承,实现继承的类被称为子类,被继承的类称为父类;

4、多态的实现离不开继承,在设计程序时,我们可以将参数的类型定义为父类型,在调用程序时根据实际情况,传入该父类型的某个子类型的实例,这样就实现了多态。 

重载和重写的区别,构造方法能不能重写

1、重载要求发生在同一个类中,多个方法之间方法名相同且参数列表不同。

2、重写发生在父类、子类中,子类的方法名、参数列表必须与父类方法相同。另外,返回值要小于等于父类方法,抛出的异常要小于等于父类方法,访问修饰符则要大于等于父类方法。

3、若父类方法的访问修饰符为private,则子类不能对其重写。

同一个类中有多个构造器,多个构造器的形参列表不同就被称为构造器重载,构造器重载让Java类包含了多个初始化逻辑,从而允许使用不同的构造器来初始化对象。

构造方法不能重写。因为构造方法需要和类保持同名,而重写的要求是子类方法要和父类方法保持同名。如果允许重写构造方法的话,那么子类中将会存在与类名不同的构造方法,这与构造方法的要求是矛盾的。 父类方法和子类方法之间也有可能发生重载,因为子类会获得父类的方法,如果子类中定义了一个与父类方法名字相同但参数列表不同的方法,就会形成子类方法和父类方法的重载。

访问修饰符

 Java中的访问修饰符有四种,分别为private,default,protected,public。
 
 private:类中被private修饰的只能在被当前类的内部访问
 
 default:类中被default修饰的只能在当前类和当前类所在包的其他类访问。
 
 protected:类中被protected修饰的可以被当前类和当前类所在的包的其他类以及子类访问。
 
 public:类中被public修饰的能被当前项目下的所有类访问

HashMap的原理

在1.8之前,HashMap的底层是数组+链表,
在1.8之后是数组+链表+红黑树;
它的put流程是:基于哈希算法来确定元素位置,当我们向集合存入数据时,他会计算传入的key的哈希值,并利用哈希值取绝对值再根据集合长度取余来确定元素的位置,如果这个位置已经存在其他元素了,就会发生哈希碰撞,则hashmap就会通过链表将这些元素组织起来,如果链表的长度达到8时,就会转化为红黑树,从而提高查询速度。 扩容机制:HashMap中数组的默认初始容量为16,当达到默认负载因子0.75时,会以2的指数倍进行扩容。 Hashmap是非线程安全的,在多线程环境下会产生循环死链,因此在多线程环境下建议使用ConcurrentHashMap

多线程

1、线程是操作系统调度的最小单元,可以让一个进程并发的处理多个任务,也叫轻量级进程,所以,一个进程里可以创建多个线程
2、线程拥有各自的计数器,堆栈,局部变量,并且能够共享进程内的资源,由于共享资源,处理器便可以在线程之间快速切换,使使用者感觉线程是同步进行
3、操作系统可以同时执行多个任务,每个任务就是一个进程。进程可以同时执行多个任务,每个任务就是一个线程。一个程序运行之后至少有一个进程,而一个进程可以包含多个线程,但至少要包含一个线程

线程的状态

NEW、RUNNABLE、BLOCKED、WTING、TIMED_WTING、TERMINATED  
Java线程在运行的生命周期中,在任意给定的时刻,只能处于下列6种状态之一:
1、NEW :初始状态,线程被创建,但是还没有调用start方法。  
2、RUNNABLE:可运行状态,线程正在JVM中执行,但是有可能在等待操作系统的调度。 
3、 BLOCKED :阻塞状态,线程正在等待获取监视器锁。 
4、 WTING :等待状态,线程正在等待其他线程的通知或中断。  
5、TIMED_WTING:超时等待状态,在WTING的基础上增加了超时时间,即超出时间自动返回。  
6、TERMINATED:终止状态,线程已经执行完毕。   
线程在创建之后默认为初始状态,在调用start方法之后进入可运行状态,可运行状态不代表线程正在运行,它有可能正在等待操作系统的调度。进入等待状态的线程需要其他线程的通知才能返回到可运行状态,而超时等待状态相当于在等待状态的基础上增加了超时限制,除了他线程的唤醒,在超时时间到达时也会返回运行状态。此外,线程在执行同步方法时,在没有获取到锁的情况下,会进入到阻塞状态。线程在执行完run方法之后,会进入到终止状态。  
Java将操作系统中的就绪和运行两个状态合并为可运行状态(RUNNABLE)。线程阻塞于synchronized的监视器锁时会进入阻塞状态,而线程阻塞于Lock锁时进入的却是等待状态,这是因为Lock接口实现类对于阻塞的实现均使用了LockSupport类中的相关方法。

线程的创建方法

创建线程有3种方式:
1.继承Thread类,重写run()方法;
2.实现Runnable接口,并实现该接口的run()方法;
3.实现Callable接口,重写call()方法。
前两种方式线程执行完后都没有返回值,最后一种带返回值;一般推荐实现Runnable接口的方式。

Django

MVC和MTV架构

 1、MVC架构(系统中的组件分为模型(Model)、视图(View)和控制器(Controller)三个部分
 
 2、MTV架构,Django对常用的设计和开发模式进行了封装,并对MVC架构提供了支持,称之为MTV架构。
 django的架构思想是MTV, 即Model、Template、views;
 views和django本身完成了controller的功能,model完成数据的功能,Template完成了显示的功能,即页面内容
 
此外,Django还有一个urls分发器,它将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

前后端如何实现通信

1、前端发送请求:前端页面通过 URL 发送请求到后端 Django 应用程序。请求可以是 GET 请求或 POST 请求。

2、Django 后端处理请求:Django 后端接收到前端发送的请求后,根据 URL 和请求方法来确定要调用的视图函数。

3、视图函数处理请求:视图函数是 Django 应用程序的核心,它处理来自前端的请求,并根据需要从数据库中获取数据,对数据进行处理,并返回给前端。

4、后端返回响应:视图函数将处理后的数据以 JSON、XML、HTML 或其他格式返回给前端。
前端处理响应:前端页面接收到后端返回的数据后,可以将数据显示到页面上,或者根据数据进行下一步操作。
在 Django 中,前端页面可以使用 Django 提供的模板语言进行渲染,或者使用前端框架(如 Vue、React 等)与 Django 后端进行交互。

当使用模板语言进行渲染时,Django 将动态生成 HTML 页面,并将渲染后的页面返回给前端。如果使用前端框架进行交互,则可以通过 AJAX 发送请求并接收响应,从而实现动态更新页面内容的效果

什么是wsgi,uwsgi,uWSGI

WSGI:web服务器网关接口,是一套协议。用于接收用户请求并将请求进行初次封装,然后将请求交给web框架
实现wsgi协议的模块:
1.wsgiref,本质上就是编写一个socket服务端,用于接收用户请求(django)
2.werkzeug,本质上就是编写一个socket服务端,用于接收用户请求(flask)

uwsgi:
与WSGI一样是一种通信协议,它是uWSGI服务器的独占协议,用于定义传输信息的类型

uWSGI:
是一个web服务器,实现了WSGI协议,uWSGI协议,http协议

VUE

介绍下VUE

1、轻量级js框架,最重要的是mvvm模式,model和view之间通过view-mode监听来进行数据到视图之间,以及视图到数据的双向绑定操作

C#

ASP.NET

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值