我爱编程

2018-04-10  本文已影响40人  寻找无双丶

三月中旬一直忙到月底,项目总算告一段落,有点时间写点东西,总结下这段时间面试遇到的问题,以及看到的经典的面试题。

1. 分布式存储与传统的集中式存储优缺点

类型 特点 优点 缺点
集中式存储 存储设备集中在一起管理,由单一存储甚至是
几个大型存储设备,分配存储资源给众多服务器使用,资源隔离细粒度有限。
1. 产品丰富,买来即用。
2. 单一性能可以堆到很高,一荣俱荣。
3. 市场成熟,商业化产品互操性、兼容性佳。
1. 数据处理集中,全局影响,不适合多租户
2. 烟囱式扩展. 硬件捆绑. 成本昂贵
3. 架构复杂,故障排查难度大
4. 资源捆绑. 一损俱损
5. 建设周期长,无法快速供给
分布式存储 软件定义存储,利用X86服务器本地磁盘与高
速网络结合,形成一个大的存储资源池,基于
这个资源池可以衍生多种存储类型,如对象存储,
随着节点规模越大,性能线性水平增长,特别适合大规模数据中心,多租户场景
1. 架构简单、扩展性极强,易于管理,自动化程度高。
2. 数据分散在不同服务器上形成冗余级数据保护。
3. 采用本地IO路径,路径更短,延迟更低。
4. 标准X86服务器和磁盘组成,低成本,采购周期短。
1. 需要高速低延迟网络环境
2. 需要多个以上节点组成
3. 要有一定的运维能力和自动化程度的环境

2. 在高并发的情况下如何提高django的处理能力(增加并发量)

3. Linux处理查询编辑XXXX文件的方式



4.13更新
今天面试了一家公司,岗位是web开发,面试问题很基础但也很有质量,虽然问题都有见到过研究过,但是时间长了,有些忘却,答不到点上,多记录点


4. __init____new__区别

1.__init__用于初始化一个类实例(initializer),比如添加一些属性, 做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。第一个参数是self。
2.但是__init__其实不是实例化一个类的时候第一个被调用 的方法。当使用 Persion(name, age) 这样的表达式来实例化一个类时,最先被调用的方法 其实是__new__方法
3.__new__用于控制生成一个新实例的过程constructor)。它是类级别的方法。第一个参数是cls

依照Python官方文档的说法,new方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。还有就是实现自定义的metaclass。

例子:
class PositiveInteger(int):
    def __new__(cls, value):
        return super(PositiveInteger, cls).__new__(cls, abs(value))

i = PositiveInteger(-3)
print(i)

著名的单例模式:
class BaseController(object):
    _singleton = None
    def __new__(cls, *a, **k):
        if not cls._singleton:
            cls._singleton = object.__new__(cls, *a, **k)
        return cls._singleton

5. 基础问题+之前总结的链接:

6. django model的继承方式有哪些

这道题我空白着。惨~ 我之前只知道个抽象继承,但是也不确定要答的是不是这个。
Django 中有三种继承关系:

  1. 通常你只是需要一个父类来保存子类所共有的字段而避免重复的在多个子类中定义,这个父类永远不打算单独使用,这种情况你可以选择 Abstract base classes。
  2. 如果你要继承一个已经存在的 model,并且每个 model 都有其独立的数据表,你可以选择 Multi-table inheritance(应避免使用多表继承,因其即增加了复杂度又提高了性能开销。可以用 OneToOneField 及 ForeignKeys 来代替)。
  3. 如果你只想改变一个 model Python-level 的行为而不修改其字段,你可以选择 Proxy Model。
# 典型的时间戳,给后面的model重用
# core/models.py
from django.db import models

class TimeStampedModel(models.Model):
    """
    An abstract base class model that provides self-
    updating ``created`` and ``modified`` fields.
    """
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

7. 一些web开发偏向理论的知识

还有一些面向对象的知识,实例方法,属性,多重继承。不展开。总结下来:基础概念要牢固,隔三差五要回顾,可能有新领悟,真正达到温故而知新

上一篇 下一篇

猜你喜欢

热点阅读