美文网首页
面试总结(1)

面试总结(1)

作者: FangHao | 来源:发表于2017-06-06 23:00 被阅读0次

    Django自定义模板

    1. 在app应用下创建templatetags文件夹,如:users/templatetags
    2. 创建_init_.py文件
    3. 示例代码 filters.py
    #coding=utf-8
    from django.template import Library
    register = Library()
    
    @register.filters
    def mod(value):
      return value%2
    
    1. 模板中使用过滤器
    {% load filters %}
    {% if book.id|mod %}
    

    装饰器

    1. 记录函数执行时间的装饰器
      decorator_1.py
    # coding=utf-8
    def changeMod(pre='isSecond'):
        """扩展原有装饰器功能,在原有装饰器基础上设置外部变量"""
        def tastTime(func):
            import time
    
            def wrapper(*args, **kw):
                t1 = time.clock()
                if pre == 'isSecond':
                    func(*args, **kw)
                    t2 = time.clock()
                    print 'Having using %.9f times' % (t2 - t1)
                else:
                    func(*args, **kw)
                    t2 = time.clock()
                    print 'Having using {} times' .format(t2 - t1)
            return wrapper
        return tastTime
    
    
    @changeMod(pre='isMin')
    # @changeMod()
    def printWord(word):
        print word
    
    
    printWord('hello world')
    
    

    斐波那契数列

    # coding=utf-8
    def fib1(n):
        """递归方式,效率较慢"""
        if n == 0:
            return 0
        elif n == 1:
            return 1
        else:
            return fib(n - 1) + fib(n - 2)
    
    
    # print fib1(10)
    
    # ******************************************** #
    
    dic = {0: 0, 1: 1}
    
    
    def fib2(n):
        """递归方法,并检验是否计算过"""
        if n not in dic:
            dic[n] = fib2(n - 1) + fib2(n - 2)
        return dic[n]
    
    
    # print fib2(10)
    
    # ******************************************** #
    
    
    def fib3(n):
        """迭代方式"""
        a, b = 0, 1
        for i in range(n):
            a, b = b, a + b
        return a
    
    
    # print fib3(10)
    
    # ******************************************** #
    

    快速排序

    # coding=utf-8
    def quickSort(lists):
        less = []
        privotList = []
        more = []
    
        if len(lists) <= 1:
            return lists
        else:
            privot = lists[0]
            for i in lists:
                if i < privot:
                    less.append(i)
                elif i > privot:
                    more.append(i)
                else:
                    privotList.append(i)
    
            less = quickSort(less)
            more = quickSort(more)
    
        return less + privotList + more
    
    
    lists = [1, 2, 3, 4, 5, 7, 1, 5, 2, 0, 8, 5, 8, 2, 9, 4]
    
    new_lists = quickSort(lists)
    print(new_lists)
    

    冒泡排序

    # coding=utf-8
    def bubbleSort(lists):
        for i in range(0, len(lists)):
            for j in range(i + 1, len(lists)):
                if lists[i] > lists[j]:
                    lists[i], lists[j] = lists[j], lists[i]
        return lists
    
    
    lists = [1, 2, 34, 5, 6, 7, 8, 0, 123, 5, 61, 23, 1, 2, 5, 0]
    
    new_lists = bubbleSort(lists)
    print new_lists
    

    桶排序

    # coding=utf-8
    def bucketSort(lst):
        pre_list = [0] * 10
        for sorce in lst:
            pre_list[sorce - 1] += 1
    
        result = []
        i = 0
        while i < len(lst):
            j = 0
            while j < pre_list[i]:
                result.append(i + 1)
                j += 1
            i += 1
        print result
    
    
    lst = [7, 9, 3, 5, 7, 10, 5, 4, 8, 3]
    bucketSort(lst)
    

    Bootstrap栅格

    考察实现过程
    css中使用@media,来规定每一个class不同尺寸占用的栅格数

    /* lg占用3个栅格,md占用3个栅格,sm占用6个栅格 */
    <div class="col-lg-3 col-md-3 col-sm-6"><div class="box"></div></div>
    

    redis相关

    1. 5种类型:string,list,hash,set,zset
    2. set一个数字,拿出来的值是什么

    考察是否知道在存的时候有数据类型转换

    python@ubuntu:~$ redis-cli
    127.0.0.1:6379> get keys*
    (nil)
    127.0.0.1:6379> set isNumber 10
    OK
    127.0.0.1:6379> get isNumber
    "10"
    127.0.0.1:6379>
    

    Django用户认证系统

    在Django中自定义身份验证

    scrapy模块流程

    scrapy框架解读--深入理解爬虫原理

    生成器

    迭代器

    前后端分离

    进程线程协程

    1. 进程资源控制
    • multiprocessing.Lock
    • multiprocessing.Semaphore
    • multiprocessing.Event

    Git相关操作

    MySQL查询

    MySQL高可用性

    MySQL高可用方案选型参考

    MySQL索引原理

    MySQL索引背后的数据结构及算法原理

    时间复杂度和空间复杂度

    算法的时间复杂度和空间复杂度-总结

    MySQL MongoDB Redis选择

    HBase vs. MongoDB vs. MySQL vs. Oracle vs. Redis,三大主流开源 NoSQL 数据库的 PK 两大主流传统 SQL 数据库

    MySQL索引

    MySQL索引及查询优化总结

    索引是MySQL提高数据查询效率的数据结构

    1. 普通索引
    create index indexName on MyTable(cloumnName(length));
    alter MyTable add index indexName on (cloumnName(length));
    drop index indexName on MyTable;
    
    1. 唯一索引
    create unique index indexName on MyTable(cloumnName(length));
    alter MyTable add unique index indexName on (cloumnName(length));
    
    1. 主键索引
    • 一个表只能有一个主键
    1. 组合索引
    CREATE TABLE mytable(  
    
    ID INT NOT NULL,   
    
    username VARCHAR(16) NOT NULL,  
    
    city VARCHAR(50) NOT NULL,  
    
    age INT NOT NULL
    
    );  
    
    create index indexName on MyTable(username(16),city,age);
    alter MyTable add index indexName (username(16),city,age);
    

    上述建索引的方式相当于建立了下面三种组合索引(MySQL最左前缀)

    username,city,age
    username,city
    username

    下面几个sql会用到索引

    select * from MyTable where username='admin' and city='BeiJing';
    select * from MyTable where username='admin';
    

    下面几个就不会走索引

    select * from MyTable where username='admin' and age=20;
    select * from MyTable where age=20;
    
    1. 建索引的时机
      WHERE、ORDER_BY

    在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引
    例如:

    like 'Python%'
    

    会走索引

    like '%Pyhton%';
    like '%Python';
    

    就不会走索引

    1. 全文索引:MyISAM,聚簇索引:InnoDB

    2. 其他注意点
      因为在以通配符%和_开头作查询时,MySQL不会使用索引
      索引不会包含有NULL值的列
      不使用NOT IN和<>操作

    相关文章

      网友评论

          本文标题:面试总结(1)

          本文链接:https://www.haomeiwen.com/subject/wrnnfxtx.html