自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

元文的博客

keep learning forever!!

  • 博客(235)
  • 收藏
  • 关注

原创 12-1 课程总结

一、课程内容回顾课程体系(上)1.面试技巧篇2.Python语言篇3.算法与数据结构篇4.编程范式篇5.(Linux)操作系统篇课程体系(下)1.网络编程篇2.数据库篇3.Web框架篇4.系统设计篇5.面试经验总结二、Python基础高频考点Python语言基础考察点1.Python特性:装饰器、生成器与协程、异常处理2.常用内置模块:collections等模块3.Cpython解释器:GIL,内存管理三、算法与数据结构高频考点Python算法与数据结构考察点:学会手

2021-06-11 23:47:45 316 3

原创 11-1 面试经验分享

一、Python后端面试经验分享寒冬之下,如何自保虽然年年都喊互联网寒冬,但是今年确实有点不一样1.互联网红利期已过,今年爆出大量知名互联网公司裁员2.竞争力压力增加,如何提升个人竞争力?3.居安思危,持续学习,多读经典二、Python就业Python能做什么?1.后端职位 Python相较于 PHP和Java不够多2.Python就业面广:爬虫、运维、数据分析、后端、AI等,找准兴趣3.重视基础,淡化语言三、面试之前面试之前如何充分准备?1.复习基础(算法数据结构+数据库+网络是

2021-06-11 23:29:07 311 3

原创 10-3 系统设计思考题:如何设计一个秒杀系统

难点:如何应对高并发的用户请求1.什么是秒杀系统?你有没有使用过?2.如何根据我们提到的三个要素来设计秒杀系统?3.秒杀系统涉及到哪些后端组件(你可以参考网上资料思考如何设计)...

2021-06-11 21:04:02 262

原创 10-2 系统设计真题解析:短网址系统的设计与实现

一、考点聚焦如何设计与实现一个短网址系统1.什么是短网址系统?包含哪些功能(接口)2.短网址系统的存储设计?需要存储哪些字段?3.如何设计算法生成短网址?二、什么是短网址系统?TinyUrl Service1.把一个长网址转成短网址的服务2.比如 https://bitly.com/3.转换之后网址的后缀不超过7位(字符或者数字)场景和限制使用场景:提供短网址服务为公司其他各业务服务1.功能:一个长网址转成短网址并存储;根据短网址还原长url2.要求短网址的后缀不超过7位(大小写字

2021-06-11 21:00:10 220 1

原创 10-1 系统设计考点解析

一、考点聚焦:1.什么是系统设计?2.系统设计需要掌握哪些知识?3.如何设计和实现一个后端系统服务的设计?二、什么是系统设计?System Design:1.系统设计是一个定义系统架构、模块、接口和数据满足特定需求的过程2.比如设计一个短网址服务、评论服务、Feed流系统、抢红包系统3.微服务架构很多系统被按照业务拆分,需要单独设计一个系统服务(比如公司里提供一个供其他所有业务使用的一个短网址服务)三、系统设计的难点?中高级工程师必经之路1.需要具备相关领域、算法的经验,有一定的架构

2021-06-10 01:07:47 132

原创 9-4 web安全思考题:什么是https

中高级考点:HTTP和HTTPS的区别1.HTTPS和HTTP的区别是什么?2.你了解什么是对称加密和非对称加密吗?3.HTTPS的通信过程是什么样的?你能否用Wireshark抓包观察

2021-06-09 23:09:17 103

原创 9-3 前后端分离与 RESTful 常见面试题

一、考点聚焦什么是前后端分离?什么是RESTful1.前后端分离的意义和方式2.什么是RESTful3.如何设计RESTful二、什么是前后端分离?有哪些优点?后端只负责提供数据接口,不再渲染模板,前端获取数据并呈现1.前后端解耦,接口复用(前端和客户端公用接口),减少开发量2.各司其职,前后端同步开发,提升工作效率。定义好接口规范。3.更有利于调度(mock)、测试和运维部署4.缺点是对于单页面不好做seo三、什么是RESTfulRespresentational State Tr

2021-06-09 23:06:11 2063

原创 9-2 web安全常考点

一、考点聚焦常见的web安全问题,原理和防范措施。安全意识1.SQL注入2.XSS(跨站脚本攻击,Cross-Site Scripting)3.CSRF(跨站请求伪造,Cross-Site request forgery)二、什么是SQL注入?SQL注入与防范1.通过构造特殊的输入参数传入web应用,导致后端执行了恶意SQL2.通常由于程序员未对输入进行过滤,直接动态拼接SQL产生3.可以使用开源工具sqlmap,SQLninia检测代码演示:创建数据库并插入数据CREATE T

2021-06-09 22:15:19 581 4

原创 9-1 Python WSGI与web框架常考点

一、考点聚焦WSGI;常见web框架1.什么是WSGI?2.常用的 Python Web框架 Django/Flask/Tornado对比3.Web框架的组成(淡化框架、加强基础)二、什么是WSGI?为什么需要它?我们经常使用uwsgi/gunicorn来部署Django/Flask应用,为什么Flask/Django都可以运行在gunicorn之上?1.Python Web Server Gateway Interface(pep3333)2.解决 Python Web Server乱象

2021-06-09 20:56:54 256 2

原创 8-5 数据库练习题:Mysql索引与 Redis 应用

一、Mysql思考题索引的理解1.为什么Mysql数据库的主键使用自增的整数比较好?2.使用uuid可以吗?为什么?3.如果是分布式系统下我们怎么生成数据库的自增id呢?二、Redis应用 - 分布式锁1.请你基于Redis编写代码实现一个简单的分布式锁2.要求:支持超时时间参数3.深入思考:如果Redis单个节点宕机了,如何处理?还有其他业界的方案实现分布式锁么?...

2021-06-08 00:16:30 109

原创 8-4 缓存机制及Redis常考面试题

一、考点聚焦缓存的使用场景;Redis的使用;缓存使用中的坑1.为什么要使用缓存?使用场景?2.Redis的常用数据类型,使用方式3.缓存使用问题:数据一致性问题;缓存穿透、击穿、雪崩问题二、什么是缓存?为什么要使用缓存?本章主要讨论的是内存缓存(常见的有Redis和Memcached)1.缓解关系数据库(常见的是Mysql)并发访问的压力:热点数据2.减少响应时间:内存IO速度比磁盘快3.提升吞吐量:Redis等内存数据库单机就可以支撑很大并发操作时间对比:操作响应时间

2021-06-08 00:01:58 441

原创 8-3 SQL语句编写常考题

一、考点聚焦SQL语句以考察各种常用连接为重点1.内连接(INNER JOIN):两个表都存在匹配时,才会返回匹配行2.外连接(LEFT/RIGHT JOIN):返回一个表的行,即使另一个没有匹配3.全连接(FULL JOIN):只要某一个表存在匹配就返回二、内连接INNER JOIN1.将左表和右表能够关联起来的数据连接后返回2.类似于求两个表的“交集”3.select * from A inner join B on a.id=b.id;示例表用A,B这两个表作为示例先来编写内

2021-06-07 19:54:36 160

原创 8-2 Mysql索引优化常考面试题

深入原理而不是死记硬背一、考点聚焦Mysql索引1.索引的原理、类型、结构2.创建索引的注意事项、使用原则3.如何排查和消除慢查询高能预警:本章考点偏理论二、什么是索引?为什么需要索引?1.索引是数据表中一个或者多个列进行排序的数据结构2.索引能够大幅提升检索速度(回顾下你所知道的查找结构)3.创建、更新索引本身也会耗费空间和时间三、什么是B-Tree?查找结构进化史1.线性查找:一个个找;实现简单;缺点是太慢2.十分查找:要求数据有序,实现简单;缺点是插入特别慢3.HASH

2021-06-07 03:19:53 1125 2

原创 8-1 Mysql基础常考题

一、考点聚焦Mysql基础考点1.事务的原理、特性、事务并发控制2.常用的字段、含义和区别3.常用数据库引擎之间区别二、什么是事务?Transaction1.事务是数据库并发控制的基本单位2.事务可以看作是一系列SQL语句的集合3.事务必须要么全部执行成功,要么全部执行失败(回滚)转帐操作是事务使用的一个常见场景代码示例:session.begin()try: item1 = session.query(Item).get(1) item2 = session.query(It

2021-06-06 01:32:29 173 2

原创 7-5 Python并发网络库常考题

一、你用过哪些并发网络库?Tornado vs Gevent vs Asyncio1.Tornado并发网络库和同时也是一个web微框架2.Gevent绿色线程(greenlet)实现并发,猴子补丁修改内置socket3.Ayncio Python3内置的并发网络库,基于原生协程二、Tornado框架Tornado适用于微服务,实现Restful接口1.底层基于Linux多路复用2.可以通过协程或者回调实现异步编程3.不过生态不完善,相应的异步框架比如ORM不完善异步编程例子:impo

2021-06-05 20:23:15 190 1

原创 7-4 并发编程IO多路复用常见考题

一、五种IO模型Unix网络编程中提到了5种网络模型1.Blocking IO(阻塞式IO)2.Noblocding IO(非阻塞式IO)3.IO multiplexing(IO多路复用)两种不常用,一般使用IO多路复用比较多1.Signal Driven IO(信息驱动IO)2.Asynchronous IO(异步IO)二、如何提升服务器的并发能力呢?一些常见的提升并发能力的方式1.多线程模型,创建新的线程处理请求2.多进程模型,创建新的进程处理请求(注意:线程/进程创建开销比较大

2021-06-05 15:29:36 388 1

原创 7-3 网络编程常考题

了解 socket编程对于学习框架原理比较重要一、常见网络编程题TCP/UDP socket编程;HTTP编程1.了解TCP编程的原理2.了解UDP编程的原理3.了解如何发送HTTP请求二、TCP socket编程原理?了解TCP socket编程原理1.如何使用socket模块2.如何建立TCP socket客户端和服务端3.客户端和服务端之间的通信流程图:编写tcp_client.py文件:import sockets = socket.socket(socket.AF_

2021-06-05 11:57:50 185

原创 7-2 HTTP 面试常考题

一、HTTP请求的组成HTTP协议由哪些部分组成?使用抓包工具去查看和理解1.状态行2.请求头3.消息主体(用GET请求时,会没有消息主体,POST请求时,则有)# 1、安装 httpiepip install httpie# 2.用 http 命令http baidu.com运行结果:用http -vhttp -v baidu.com执行结果:注意:常用的HTTP请求头也是面试常考点二、HTTP响应的组成1.状态行2.响应头3.响应正文三、HTTP常见状态码

2021-06-04 22:32:51 211 1

原创 7-1 网络协议TCP和UDP面试常考题

一、浏览器输入一个url中间经历的过程一个常见的考题,要回答全面不容易1.中间涉及到哪些过程2.饮食哪些网络协议3.每个协议都干了什么?注意:不要把自己带坑里,熟悉到哪一层协议就说到哪一层流程图:#mermaid-svg-B2v6BD5hRgRCOtHK .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-sv

2021-06-04 21:17:34 271 1

原创 6-4 线程练习题:多线程爬虫

编写多线程爬虫如何使用Python的threading模块1.请你使用python的threading模块2.要求1:该类可以传入最大线程数和需要抓取的网址列表3.要求2:该类可以通过继承的方式提供一个处理response的方法

2021-06-04 20:46:54 148 1

原创 6-3 操作系统内存管理机制与Python垃圾回收面试题

一、什么是分页机制操作系统为了高效管理内存,减少碎片,就有了将逻辑地址和物理地址分离的内存分配管理方案1.程序的逻辑地址划分为固定大小的页(Page)2.物理地址划分为同样大小的帧(Frame)3.通过页表对应逻辑地址和物理地址如下图所示:二、什么是分段机制?分段是为了满足代码的一些逻辑需求1.数据共享,数据保护,动态链接等2.通过段表实现逻辑地址和物理地址的映射关系3.每个段内部是连续内存分配,段和段之间是离散分配的。如下图所示:三、分页和分段的区别1.页是出于内存利用率的角

2021-06-04 00:17:13 178 2

原创 6-2 操作系统线程和进程常考面试题

一、进程和线程的区别进程和线程对比1.进程是对运行时程序的封装,是系统资源调度和分配的基本单位2.线程是进程的子任务,cpu调度和分配的基本单位,实现进程内并发3.一个进程可以包含多个线程,线程依赖进程存在,并共享进程内存二、什么是线程安全python哪些操作是线程安全的?1.一个操作可以在多个线程环境中安全使用,获取正确的结果2.线程安全的操作好比线程是顺序执行而不是并发执行的(i += 1)3.一般如果涉及到写操作需要考虑如何让多个线程安全访问数据三、线程同步的方式了解线程同步的方

2021-06-03 23:21:40 222

原创 6-1 面试常考 linux 命令

一、为什么要学Linux?大部分企业应用跑在 linux server上1.熟练在 Linux 服务器上操作2.了解 Linux工作原理和常用工具3.需要了解查看文件、进程、内存相关的一些命令,用来调试和排查二、如何查询 Linux命令的用法1.使用 man 命令查询用法。但是 man手册比较晦涩2.使用工具自带的 help,比如 pip --help3.这里介绍一个 man的替代工具 tldr。pip install tldr三、文件/目录操作命令掌握常见的文件操作工具1.chown

2021-06-03 22:22:13 159 1

原创 5-7 编程范式练习题:编写一个单例模式

单例模式单例模式有多种方式来实现1.之前我们使用过 __new__的方式实现了单例模式2.你能使用类装饰器来完成单例模式么?3.小提示:装饰器既可以接受一个函数,也可以是一个类(都是对象)...

2021-06-03 18:05:17 135

原创 5-6 Python 函数式编程常考题

一、函数式编程Python支持部分函数式编程特性1.把电脑的运算视作数学上的函数计算(lambda演算)2.高阶函数:map/reduce/filter3.无副作用,相同的参数调用始终产生同样的结果map的用法:# mapm = list(map(lambda x: x*2, range(10)))print(m) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]# 一般推荐列表推导代替 mapl = [i*2 for i in range(10)]pri

2021-06-03 18:01:16 212

原创 5-5 设计模式:行为型模式Python应用面试题

一、行为型模式常考题常见行为型设计模式1.迭代器模式(Iterator):通过统一的接口迭代对象2.观察者模式(Observer):对象发生改变的时候,观察者执行相应动作3.策略模式(Strategy):针对不同规模输入使用不同的策略二、迭代器模式迭代器模式(Iterator)1.Python内置对迭代器模式的支持2.比如我们可以用for遍历各种 Iterable的数据类型3.Python里可以实现__next__和__iter__实现迭代器from collections import

2021-06-03 17:45:56 176 1

原创 5-4 设计模式:结构型模式Python应用面试题

一、结构型模式常考题常见结构型设计模式1.装饰器模式(Decorator):无需子类化扩展对象功能2.代理模式(Proxy):把一个对象的操作代理到另一个对象3.适配器模式(Adapter):通过一个间接层䢪配统一接口4.外观模式(Facade):简化复杂对象的访问问题5.享元模式(Flyweight):通过对象复用(池)发送资源利用,比如连接池6.Model-View-Controller(MVC):解耦展示逻辑和业务逻辑二、代理模式什么是代理模式(Proxy)1.把一个对象的操作代理

2021-06-03 16:49:57 117 1

原创 5-3 设计模式:创建型模式Python应用面试题

设计模式分为:1.创建型、2.结构型、3.行为型一、创建型模式常考题常见创建型设计模式1.工厂模式(Factory):解决对象创建问题2.构造模式(Builder):控制复杂对象的创建3.原型模式(Prototype):通过原型的克隆创建新的实例4.单例模式(Borg/Singleton):一个类只能创建同一个对象5.对象池模式(Pool):预先分配同一类型的一组实例6.惰性计算模式(Lazy Evaluation):延迟计算(python的property)二、工厂模式什么是工厂模式(

2021-06-03 16:07:15 155

原创 5-2 装饰器面试常考问题

一、什么是装饰器Decorator1.Python中一切皆对象,函数也可以当做参数传递2.装饰器是接受函数作为参数,添加功能后返回一个新函数的函数(类)3.Python中能过@使用装饰器二、编写一个记录函数耗时的装饰器import timedef log_time(func): # 接受一个函数作为参数 def _log(*args, **kwargs): beg = time.time() res = func(*args, **kwargs) print(use time

2021-06-03 14:44:15 2313

原创 5-1 面向对象基础及Python 类常考问题

一、什么是面向对象编程?Object Oriented Programming(OOP)1.把对象作为基本单元,把对象抽象成类(Class),包含成员和方法2.数据封装、继承、多态3.Python中使用类来实现。过程式编程(函数),OOP(类)二、python中如何创建类?def Person(object): # py3 直接 class Person def __init__(self, name, age): self.name = name self.age = age

2021-06-03 09:18:40 167

原创 4-9 Python字符串常考算法题

字符串题了解常用的字符串操作1.Python内置了很多字符串操作,比如 split,upper,replace等2.常考题:反转一个字符串3.常考题:判断一个数字是否是回文数# leetcode 第344号题目:反转字符串class Solution: def reverseString(self, s: List[str]) -> None: # 方法一: s.reverse() # 方法二: beg = 0 end = len(s) - 1 whiel

2021-06-02 23:46:35 286 1

原创 4-8 Python数据结构常考题之堆

一、堆堆的常考题基本围绕在合并多个有序(数组/链表);TopK问题1.理解堆的概念,堆是完全二叉树,有最大堆和最小堆2.全使用python内置的 heapq模块实现堆的操作3.常考题:合并K个有序链表 leetcode merge-k-sorted-list# leetcode 第23号题目: 合并K个升序链表from heapq import heapify, heappopclass ListNode: def __init__(self, val=0, next=None): s

2021-06-02 23:19:11 108

原创 4-7 Python数据结构常考题之栈与队列

一、栈与队列后进先出 VS 先进先出1.熟练掌握用 python 的 list 或者 collections.deque()实现栈和队列2.常考题:用栈实现队列3.leetcode implement-queue-using-stacks用栈实现队列图示分析:代码实现:# leetcode 第232号 用栈实现队列from collections import dequeclass Stack: def __init__(self): self.items =

2021-06-02 22:50:25 301 1

原创 4-6 Python数据结构常考题之二叉树

一、二叉树二叉树涉及到递归和指针操作,常结合递归考察1.二叉树的操作很多可以用递归的方式解决,不了解递归会比较吃力2.常考题:二叉树的镜像(反转二叉树)3.常考题:如何层序遍历二叉树(广度优先)# leetcode 第226号题:反转二叉树class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: def invertTree(sel

2021-06-02 22:14:55 229

原创 4-5 Python数据结构常考题之链表

一、链表链表涉及到指针操作较为复杂,容易出错,经常用用考题1.熟悉链表的定义和常见操作2.常考题:删除一个链表节点3.常考题:合并两个有序链表# leetcode第237号题目:删除一个链表节点class Solution: def deleteNode(self, node): next_node = node.next after_next_node = node.next.next node.val = next_node.val node.next = after_ne

2021-06-02 21:16:05 150

原创 4-4 Python白板编程(手写代码)

一、什么是白板编程传说中的手写算法题,白纸或者白板上手写代码1.对于没有参加过 ACM/蓝桥杯之类算法竞赛的同学比较吃亏2.刷题。LeetCode,《剑指offer》,看github题解3.最近某大型互联网公司多年经验跳槽出来因为算法题面挂小公司二、为啥要手写算法题工作用不到,为啥还要考?1.有些公司为了筛选编程能力强的同学,近年来对算法要求越来越高2.针对刚出校门的同学比较多,有经验的反而算法考得少(偏工程经验)3.竞争越来越激烈,大家水平差不多的优先选取有算法竞赛经验的。三、如何准备

2021-06-02 20:38:39 813

原创 4-3 Python数据结构常考题

一、常考题型python web后端常考数据结构1.常见的数据结构链表、队列、栈、二叉树、堆2.使用内置结构实现高级数据结构,比如内置的 list/deque实现栈3.Leetcode 或者 《剑指offer》上的常见题二、常考数据结构之链表链表有单链表、双链表、循环双端链表1.如何使用 python来表示链表结构2.实现链表常见操作,比如插入节点,反转链表,合并多个链表等3.Leetcode练习常见链表题目下面是 leetcode第 206号题 反转链表# 定义单链表class L

2021-06-02 01:21:05 521 1

原创 4-2 Python面试常考算法

一、算法常考点排序+查找,重中之重1.常考排序算法:冒泡排序、快速排序、归并排序、堆排序2.线性查找、二分查找等3.能独立实现代码(手写),能够分析时间空间复杂度二、常用排序算法时空复杂度排序算法最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n^2)O(n^2)稳定O(1)选择排序O(n^2)O(n^2)不稳定`O(1)插入排序O(n^2)O(n^2)稳定`O(1)快速排序O(n^2)O(n*log2n)不稳定O

2021-06-01 23:04:56 4890 18

原创 4-1 Python常用内置算法与数据结构常考题

一、你使用过哪些常用内置算法和数据结构仔细回想一下你用过哪些内置的算法数据结构?1.sorted2.dict/list/set/tuple…3.问题:想的不全或者压根没了解和使用过数据结构/算法语言内置内置库线性结构list(列表)/tuple(元组)array(数组,不常用)/collecions.namedtuple链式结构collections.deque(双端队列)字典结构dict(字典)collections.Counter(计数器)/Ord

2021-06-01 20:57:48 308

原创 3-8 Python基础练习题:深拷贝与浅拷贝

一、深拷贝与浅拷贝的区别1.什么是深拷贝?什么是浅拷贝?2.Python中如何实现深拷贝?3.思考:Python中如何正确初始化一个二维数组?

2021-06-01 01:33:09 320

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除