zoukankan      html  css  js  c++  java
  • 笔记11:面试知识

    面试笔记

    1 Python 是如何进行内存管理的?

    答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制
    ⒈对象的引用计数机制
    Python 内部使用引用计数, 来保持追踪内存中的对象, 所有对象都有引用计数。
    引用计数增加的情况:
    ❶一个对象分配一个新名称
    ❷将其放入一个容器中(如列表、 元组或字典)
    引用计数减少的情况:
    ❶使用 del 语句对对象别名显示的销毁
    ❷引用超出作用域或被重新赋值
    sys.getrefcount( )函数可以获得对象的当前引用计数,多数情况下, 引用计数比你猜测得要大得多。 对于不可变数据(如数字和字符串) , 解释器会在程序的不同部分共享内存, 以便节约内存。

    ⒉垃圾回收
    ❶当一个对象的引用计数归零时, 它将被垃圾收集机制处理掉。
    ❷当两个对象 a 和 b 相互引用时, del 语句可以减少 a 和 b 的引用计数, 并销毁用于引用底层对象的名称。 然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零, 对象也不会销毁。 (从而导致内存泄露) 。 为解决这一问题, 解释器会定期执行一个循环检测器, 搜索不可访问对象的循环并删除它们。

    ⒊内存池机制
    Python 提供了对内存的垃圾收集机制, 但是它将不用的内存放到内存池而不是返回给操作系统。
    ❶Pymalloc 机制。 为了加速 Python 的执行效率, Python 引入了一个内存池机制, 用于管理对小块内存的申请和释放。
    ❷Python 中所有小于 256 个字节的对象都使用 pymalloc 实现的分配器, 而大的对象则使用系统的 malloc。
    ❸对于 Python 对象, 如整数, 浮点数和 List, 都有其独立的私有内存池, 对象间不共享他们的内存池。 也就是说如果你分配又释放了大量的整数, 用于缓存这些整数的内存就不能再分配给浮点数。

    2 有没有一个工具可以帮助查找 python 的 bug 和进行静态的代码分析?

    答: PyChecker 是一个 python 代码的静态分析工具, 它可以帮助查找 python 代码的 bug, 会对代码的复杂度和格式提出警告Pylint 是另外一个工具可以进行 codingstandard 检查

    3 前端、后端和数据库角度阐述web项目的性能

    前端优化:

    1 减少http请求

    2 html和css放在页面上部,js放在底部。因为js加载慢防止显示不全,性能差,影响用户体验

    后端优化

    1 缓存存储读写次数搞变化少的数据,如网站首页和商品信息。通常固定的或者更新周期长的数据放在缓存中,应用程序读取时候找不到再访问磁盘进行读写操作。(磁盘访问速度远远低于内存)

    2 对耗时操作采用异步处理,对采集比较频繁数据单独存储

    3 代码优化,方法封装,避免多次嵌套使用循环

    数据库:

    1 如果有条件,数据放在redis读取快

    2 建立索引和外键

    3 多多表联合查询的数据进行视图处理

    4 什么是同源策略

    同源策略同时满足协议相同、域名相同和端口相同。

    5 cookie和session区别

    1 session存放在服务器端,cookie在客户端(浏览器查看)

    2 session运行依赖session ID,session id存放在cookie中,两者同时生效

    3 session安全性较高

  • 相关阅读:
    1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause
    camera 3A算法
    fatal: unable to access 'https://github.com/XXXX.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
    mysql判断表是否存在
    工具网站
    HSSFWorkbook实现导入导出
    mysql缓存问题 相关参数的查看
    mysql日期转换格式
    Java8新特性之Lambda表达式
    国产浏览器
  • 原文地址:https://www.cnblogs.com/baiboy/p/11014674.html
Copyright © 2011-2022 走看看