3.31串讲

Posted 今天你学Java了吗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.31串讲相关的知识,希望对你有一定的参考价值。

3.31串讲 面向对象

文章目录

什么是对象、类:

  • 类:是对具有相同特性事物的抽象;在java中Class就是类,类是有属性(成员变量)和方法
  • 对象:对象是类的具体实例

类是一个抽象的概念,把组成的抽象叫属性,把行为的抽象叫方法

面向对象,面向过程

  • 面向对象:一切皆对象,注重结果
  • 面向过程:一切皆方法,注重过程

面向对象特征

  • 封装:
    • 属性私有化,提供公开的getter、setter方法,
    • 安全性,可以不用在意具体实现细节
  • 继承:
    • extends
    • java中是单继承,但可以多层继承
    • 一个类只能继承一个类
    • 所有类都有父类,如果没有看到 extends,它的父类就是 Object
    • 代码复用
  • 多态:
    • 同一个事物在不同环境下表现出不同的形态
    • 行为(方法)的多态:
      • Override 重写/覆盖
      • Overload 重载
    • 对象的多态:
      • 父类 f = new 子类;
      • 父接口 f = new 实现类;
      • 条件:继承或实现的关系,从左到右:has a;从右到左:is a 关系
  • 抽象:
    • abstract
    • 不容易出错

接口&抽象类

  • 抽象类:特殊的类,类名前用abstract 修饰
    • 抽象类不一定有抽象方法,有抽象方法的类必须是抽象类
    • 抽象类不能实例化,必须通过子类继承后来new 对象
  • 接口:特殊的抽象类,用 interface 修饰
    • 接口中的方法都是 public abstract 修饰的,所以默认省略这两个关键字
    • 接口中的变量都是常量
    • 类和接口之间可以多实现,接口与接口之间可以多继承
  • 在有继承和实现的情况下,先继承后实现

构造方法/构造器

  • 特点:与类名一致,没有返回值类型,也不写void
  • 作用:创建对象,给属性赋值,初始化
  • 一个类中可以有多个构造方法,如果不写,系统默认提供一个无参构造方法,如果写了构造方法,系统不在默认提供,写了有参构造方法,建议加上无参构造,因为继承时子类会默认调用父类的无参构造方法
  • 构造方法之间相互调用,使用 this(xxx),并且必须放在构造方法的第一行,只能调用一次

关键字

  • this:当前对象
    • this.XXX 调用本类的属性
    • this(XXX) 调用本类的其他构造方法,,必须放在构造方法第一行
  • super:
    • super.XX调用父类的属性
    • super(XXX)调用父类的构造方法,,必须放在构造方法第一行
  • static
    • 静态的
    • 静态方法、静态内部类、静态变量、静态代码块
    • 属于类的成员
    • 一个类只有一份,所有对象共享
  • final
    • 最后的,最终的
    • 修饰变量:赋值后不能被修改
    • 修饰方法:方法不能被重写
    • 修饰类:类不能被继承
  • instanecof 判断对象类型转换

修饰符

访问修饰符本类同包派生类其他
private×××
默认××
protected×
public

内部类

  • 匿名内部类
  • 成员内部类
  • 局部内部类
  • 静态内部类

枚举 Enum

  • 用来定义一组常量,对象数目固定,不可随便造
  • 季节、月份、星期

重载和重写

  • 重载:
    • 发生在同一个类中
    • 方法同名不同参
  • 重写:
    • 发生在父子类中
    • 子类方法与父类方法关系:两同两小一大
      • 方法名相同、参数列表相同
      • 返回值类型小于等于父类、抛出异常小于等于父类
      • 访问修饰符大于大于父类

父子类方法调用关系

父子类之间的方法有以下关系:

  • 父类中有,子类中没有:调用父类的
  • 父类中有,子类中也有:调用子类的重写后的方法
  • 父类中没有,子类中有:子类特有方法需要强转后调用

串讲-crm项目

Python面试重点(web篇)

注意:只有必答题部分计算分值,补充题不计算分值。

第一部分 必答题

注意:除第四题4分以外,其他题均每题3分。

  1. 写出常用的bootstrap的样式。

    栅格系统
    <body>
      <div class="container">
          <div class="row">
              <div class="col-md-1>1</div>
              <div class="col-md-2>2</div>
              <div class="col-md-3>3</div>
              <div class="col-md-4>4</div>
              <div class="col-md-2>2</div>
          </div>
      </div>
    </body>
    ?
    表格
    ?
    <table class="table">
    ...
    </table>
    ?
    表单
    ?
    <form class="form-horizontal">
    <div class="form-group">
      <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
      <div class="col-sm-10">
        <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
      </div>
    </div>
    <div class="form-group">
      <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
      <div class="col-sm-10">
        <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
      </div>
    </div>
    <div class="form-group">
      <div class="col-sm-offset-2 col-sm-10">
        <div class="checkbox">
          <label>
            <input type="checkbox"> Remember me
          </label>
        </div>
      </div>
    </div>
    <div class="form-group">
      <div class="col-sm-offset-2 col-sm-10">
        <button type="submit" class="btn btn-default">Sign in</button>
      </div>
    </div>
    </form>
    ?
    按钮
    <!-- Standard button -->
    <button type="button" class="btn btn-default">(默认样式)Default</button>
    ?
    <!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
    <button type="button" class="btn btn-primary">(首选项)Primary</button>
    ?
    <!-- Indicates a successful or positive action -->
    <button type="button" class="btn btn-success">(成功)Success</button>
    ?
    <!-- Contextual button for informational alert messages -->
    <button type="button" class="btn btn-info">(一般信息)Info</button>
    ?
    <!-- Indicates caution should be taken with this action -->
    <button type="button" class="btn btn-warning">(警告)Warning</button>
    ?
    <!-- Indicates a dangerous or potentially negative action -->
    <button type="button" class="btn btn-danger">(危险)Danger</button>
    ?
    <!-- Deemphasize a button by making it look like a link while maintaining button behavior -->
    <button type="button" class="btn btn-link">(链接)Link</button>

     

  2. 什么是响应式布局?

    一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本

     

  3. 请通过jQuery发送ajax请求。

    $.ajax({
              ‘url‘:‘/calc/‘,
              ‘type‘:‘post‘,
              ‘data‘:{
                  ‘k1‘:$(‘[name="i1"]‘).val(),
                  ‘k2‘:$(‘[name="i2"]‘).val(),
              },
              success:function (ret) {
                  $(‘[name="i3"]‘).val(ret)
              }
          })

     

  4. JavaScript与this相关的面试题(4分)

    name = ‘老男孩‘;
    ?
    info = {
    name:‘alex‘,
    age:123,
    func:function(){
    console.log(this.name);
    }
    }
    ?
    info.func()
    ?
    老男孩
    name = ‘老男孩‘;
    ?
    info = {
    name:‘alex‘,
    age:123,
    func:function(){
    console.log(this.name);
           function f1(){
               console.log(this.name);
          }
           f1()
    }
    }
    ?
    info.func()
    老男孩 Alex
    name = ‘老男孩‘;
    ?
    info = {
    name:‘alex‘,
    age:123,
    func:function(){
    console.log(this.name);
          (function(){
               console.log(this.name);
          })()
    }
    }
    ?
    info.func()
    老男孩 老男孩
    name = ‘老男孩‘;
    ?
    info = {
    name:‘alex‘,
    age:123,
    func:function(){
    console.log(this.name);
           var xxx = this;
          (function(){
               console.log(xxx.name);
          })()
    }
    }
    ?
    info.func()
    老男孩 Alex
  5. 什么是跨域?如何解决?

    当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
    ?
    使用代理

     

  6. 简述你对Http协议的理解?

    http协议是一种应用层超文本传输协议  默认端口 80
    无状态: 每次请求都是独立的, 两个请求之间没有联系, 但是会引入 Cookie 和 Session 机制来关联请求
    无连接:服务端收到客户端请求后, 响应完成并收到客户端的应答之后, 立即断开连接
    
    HTTP连接7步骤
    1.建立tcp/ip连接 (3次握手)
    2.客户端向服务端发送HTTP请求
    3.客户端发送请求头信息,请求内容,最后会发送一行空白,表示客户端发送完毕
    4.服务器做出应答
    5.服务器向客户端发送应答头信息
    6.服务端发送应答头信息,应答内容,最后会发送一行空白,表示服务端发送完毕
    7.服务端关闭tcp连接(4次挥手)
    

     

  7. 简述你对Https协议的理解?

    默认端口号是 443
    
    客户端请求 https 连接, 服务器收到请求后会把证书信息(包含公钥和签名) 返回给客户端
    客户端会校验这个证书签名的有效性从而获取到公钥
    客户端随机生成会话密钥(对称加密), 然后利用证书里面的公钥将会话密钥加密, 连同加密后的内容传送给服务端
    服务器利用私钥解密出会话密钥, 然后解密出内容
    服务端利用会话密钥通信
    
    

     

  8. 列举常见的http请求头及作用?

    Accept: 浏览器可以接受的 MIME 类型
    Accept-Encoding:浏览器支持的编码类型
    Accept-Language: 浏览器支持的语言
    Content-Length : 请求消息的正文长度
    Content-Type : 客户端接受服务器返回的文件类型
    User-Agent : 请求的用户信息, 浏览器类型
    Host : 给出接受请求的服务器主机名和端口号
    
    

     

  9. 列举常见的http请求方法及作用?

    GET 、POST 、HEAD、PUT、DELETE、OPTIONS
    
    GET: 可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
    HEAD:HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
    PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。
    DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。
    POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。
    OPTIONS:这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
    

     

  10. 列举常见的http响应状态码。

    1xx : 临时响应, 需要请求者继续执行操作
    2xx: 成功处理了请求的状态码
    3xx : 如果要完成请求, 需要进一步操作, 重定向
    4xx : 请求出错
    5xx: 服务器内部错误
    

     

  11. http中connections:keep-alive的请求头的作用?

    因为HTTP是无状态的,connections记录了个人信息,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的TCP连接。但是Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。
    

     

  12. django请求生命周期?

    客户端发送请求   经过中间件找到url
    根据请求URL在路由系统查询相应的视图函数
    视图函数根据调用数据库获取相应数据
    视图函数根据模板渲染生成页面
    返回客户端
    

     

  13. 什么是wsgi?

    WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口。具体的来说,WSGI是一个规范,定义了Web服务器如何与Python应用程序进行交互,使得使用Python写的Web应用程序可以和Web服务器对接起来。WSGI一开始是在PEP-0333中定义的,最新版本是在Python的PEP-3333定义的。
    
    

     

  14. 什么是MVC ?什么是MTV?

     mvc
     1.模型层:  model     负责业务对象和数据库的对象(ORM)的映射
    
     2.视图层       views  负责与用户的交互(书写逻辑)
    
     3.控制器  Controller   完成用户对模型层和视图层调用,来完成用户的请求
    mtv
    
     1.模型层:  model     负责业务对象与数据库的对象(ORM)的映射
    
      2.模板层  Template   负责如何把页面展示给用户(html)
    
     3.视图层:  View    负责业务逻辑,并在适当的时候调用Model和Template
    

     

  15. django中间件作用以及应用场景?

    作用:在request和response之间的一道处理过程,用于全局范围改变django输入和输出
    应用场景:比如博客园你需要登录才能发表博客,在你每次访问博客园或刷新的时候中间件判断你有没有登录,避免了每次刷新都要登录一遍 
    

     

  16. django中FBV和CBV有什么区别?

    • FBV 再视图里使用函数处理请求

    • CBV 再视图里使用类处理方法

  17. django orm中如何批量创建数据?

  18. django 如何执行原生SQL?

  19. django的orm如何查询id不等于5的数据。

  20. cookie和session的区别?

    • cookie 保存在浏览器缓存中,关闭浏览器就失效

    • session 保存在数据库中,只要不删除,在设定的有效期内一直有效

  21. django的orm中on_delete的作用?

    • 级联

    • models.CASCADE 级联删除 当关联表中的数据删除时,该外键也删除

    • models.SET_NULL 置空 当关联表中的数据删除时,该外键置空,当然,你的这个外键字段得允许为空,null=True

    • models.SET_DEFAULT 设置默认值 删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。

  22. 描述crm有哪些功能?

    • 公户转私户(批量)

    • 私户转公户(批量)

    • 创建班级

    • 创建课程

    • 跟进记录

    • 权限管理

  23. crm中什么是公户?什么是私户?为什么要做这个区分?

    • 公户 就是没有销售跟进的,私户就是有销售正在跟进

    • 因为销售在选人的时候不知道有谁已经被别的销售选过了,重复挑选

  24. 请列举出CRM系统中的表。

    • 部门表

    • 用户表

    • 客户表

    • 校区表

    • 班级表

    • 跟进记录表

    • 报名表

    • 缴费记录表

    • 课程记录表

    • 学习记录表

  25. 对数据库的数据做展示时,不同字段类型有不同的展示方法,分别是什么?

  26. 请详细说说你们公司销售是如何使用CRM的。

  27. CRM中有哪些技术点?

  28. 为什么不用现成的crm而是自己去开发?

  29. 请简述实现权限控制的流程。

  30. 列举权限有多少张表?表中都有那些字段?

  31. 为什么要把权限信息放到session中?权限信息放到session有什么优缺点?

  32. 权限控制到按钮级别是如何实现的?

  33. 如何实现把权限粒度控制到数据行?

 

第二部分 补充题

  1. 详细描述是jsonp实现机制?

  2. django的orm如何通过数据自动化生成models类?

  3. django中如何设置缓存?

  4. django中信号的作用?

  5. django中如何设置读写分离

 

 

以上是关于3.31串讲的主要内容,如果未能解决你的问题,请参考以下文章

Java 直播串讲 001

python重点串讲

前端语言串讲 | 青训营笔记

互娱3.31一面

Java知识串讲

Web前端开发职业标准串讲(初级)已上传