知乎百万热议:python到底是自学好还是报班好

写在开篇

我目前从事Python全栈开发,在爬虫、web、数据分析、机器学习、web/app自动化测试、前端、UI设计等均有丰富的项目经验。

我的故事可能会令你鼓舞,我本科是化工专业,毕业后卖保险、卖房子、进化工厂,后因同学介绍,说IT工资高,就去深圳培训了几个月UI设计,并从事了一年UI工作,后来这家公司倒闭了。

在做了公司倒闭后,我又面临找工作,不过这时候我已经不像刚毕业那会不知道该做什么,这时候我目标很明确,就是找个月薪过万的工作,做设计虽然有机会达到月薪过万,但是觉得设计破事情太多了,有时候做的东西没点标准,完全就是看老板喜欢不喜欢你做的东西,如果老板喜欢简约的,你做的再炫酷也不行,也就是可能摸清楚老板喜好比你设计水平本身更重要,而且设计工资水平涨幅有限,能达到11000以上都是优秀设计师了,而我那家公司宿舍一个爱打听别人工资的同事又经常跟我说些别人的工资都是咋样的,项目经理月薪3万,年终奖8万,普通技术大牛月薪25000,最一般的刚进入公司的开发起步在13000以上,大部分都在13000-20000之间,当然我们这是土豪金融公司,自成立之初就充满了暴发户的气息,而且上班大小周,根据不同等级会比一般的公司工资高2000—5000左右,其实也早知道开发工资高,但也没想到我们公司那些天天抬头不见低头见说公司加班多工资低的同事们工资高到比我预想的工资还高,于是就铁定心做开发了,要知道做设计即使在做2年,也难破10000的工资,但是开发可能搞两年,有经验了,付出同样的时间,可能工资要比设计高3000-5000也是很正常的。

于是就问我朋友该学什么语言,当时选前端、java、python,后来一些同事朋友说让我学python,前端和java现在从事人很多,刚入行可能竞争力也不是很大,而且互联网东西,多接触新东西会比较好,于是我就选了python,从8月开始学习,学了半年,这半年早出晚归,每天早上8点多上课,晚上9点30下晚自习,也是从python基础、前端、django、flask、爬虫、数据分析、机器学习什么的都学了,当时学费是自己攒下交的20000块,交完学费,再每月交房租,吃喝,而且又不挣钱,基本一两个月就已经没钱了,后面每月支付宝借呗借款,到毕业时候,欠马爸爸一万多,真正做到了那年我孤身一人来深圳,从身无分文到负债累累的历练历程。

学习方案

下面是学校给我列的一百天计划里面的学习框架,我在这里放上来。

Day01~15 - Python语言基础

Day01 - 初识Python

Python简介 - Python的历史 / Python的优缺点 / Python的应用领域

搭建编程环境 - Windows环境 / Linux环境 / MacOS环境

从终端运行Python程序 - Hello, world / print函数 / 运行程序

使用IDLE - 交互式环境(REPL) / 编写多行代码 / 运行程序 / 退出IDLE

注释 - 注释的作用 / 单行注释 / 多行注释

Day02 - 语言元素

程序和进制 - 指令和程序 / 冯诺依曼机 / 二进制和十进制 / 八进制和十六进制

变量和类型 - 变量的命名 / 变量的使用 / input函数 / 检查变量类型 / 类型转换

数字和字符串 - 整数 / 浮点数 / 复数 / 字符串 / 字符串基本操作 / 字符编码

运算符 - 数学运算符 / 赋值运算符 / 比较运算符 / 逻辑运算符 / 身份运算符 / 运算符的优先级

应用案例 - 华氏温度转换成摄氏温度 / 输入圆的半径计算周长和面积 / 输入年份判断是否是闰年

Day03 - 分支结构

分支结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图

if语句 - 简单的if / if-else结构 / if-elif-else结构 / 嵌套的if

应用案例 - 用户身份验证 / 英制单位与公制单位互换 / 掷骰子决定做什么 / 百分制成绩转等级制 / 分段函数求值 / 输入三条边的长度如果能构成三角形就计算周长和面积

Day04 - 循环结构

循环结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图

while循环 - 基本结构 / break语句 / continue语句

for循环 - 基本结构 / range类型 / 循环中的分支结构 / 嵌套的循环 / 提前结束程序

应用案例 - 1~100求和 / 判断素数 / 猜数字游戏 / 打印九九表 / 打印三角形图案 / 猴子吃桃 / 百钱百鸡

Day05 - 构造程序逻辑

基础练习 - 水仙花数 / 完美数 / 五人分鱼 / Fibonacci数列 / 回文素数

综合练习 - Craps赌博游戏

Day06 - 函数和模块的使用

函数的作用 - 代码的坏味道 / 用函数封装功能模块

定义函数 - def语句 / 函数名 / 参数列表 / return语句 / 调用自定义函数

调用函数 - Python内置函数 / 导入模块和函数

函数的参数 - 默认参数 / 可变参数 / 关键字参数 / 命名关键字参数

函数的返回值 - 没有返回值 / 返回单个值 / 返回多个值

作用域问题 - 局部作用域 / 嵌套作用域 / 全局作用域 / 内置作用域 / 和作用域相关的关键字

用模块管理函数 - 模块的概念 / 用自定义模块管理函数 / 命名冲突的时候会怎样(同一个模块和不同的模块)

Day07 - 字符串和常用数据结构

字符串的使用 - 计算长度 / 下标运算 / 切片 / 常用方法

列表基本用法 - 定义列表 / 用下表访问元素 / 下标越界 / 添加元素 / 删除元素 / 修改元素 / 切片 / 循环遍历

列表常用操作 - 连接 / 复制(复制元素和复制数组) / 长度 / 排序 / 倒转 / 查找

生成列表 - 使用range创建数字列表 / 生成表达式 / 生成器

元组的使用 - 定义元组 / 使用元组中的值 / 修改元组变量 / 元组和列表转换

集合基本用法 - 集合和列表的区别 / 创建集合 / 添加元素 / 删除元素 / 清空

集合常用操作 - 交集 / 并集 / 差集 / 对称差 / 子集 / 超集

字典的基本用法 - 字典的特点 / 创建字典 / 添加元素 / 删除元素 / 取值 / 清空

字典常用操作 - keys()方法 / values()方法 / items()方法 / setdefault()方法

基础练习 - 跑马灯效果 / 列表找最大元素 / 统计考试成绩的平均分 / Fibonacci数列 / 杨辉三角

综合案例 - 双色球选号 / 井字棋

Day08 - 面向对象编程基础

类和对象 - 什么是类 / 什么是对象 / 面向对象其他相关概念

定义类 - 基本结构 / 属性和方法 / 构造器 / 析构器 / str方法

使用对象 - 创建对象 / 给对象发消息

面向对象的四大支柱 - 抽象 / 封装 / 继承 / 多态

基础练习 - 定义学生类 / 定义时钟类 / 定义图形类 / 定义汽车类

Day09 - 面向对象进阶

属性 - 类属性 / 实例属性 / 属性访问器 / 属性修改器 / 属性删除器 / 使用slots

类中的方法 - 实例方法 / 类方法 / 静态方法

运算符重载 - add / sub / or /getitem / setitem / len / repr / gt / lt / le / ge / eq / ne / contains

类(的对象)之间的关系 - 关联 / 继承 / 依赖

继承和多态 - 什么是继承 / 继承的语法 / 调用父类方法 / 方法重写 / 类型判定 / 多重继承 / 菱形继承(钻石继承)和C3算法

综合案例 - 工资结算系统 / 图书自动折扣系统 / 自定义分数类

Day10 - 图形用户界面和游戏开发

使用tkinter开发GUI

使用pygame三方库开发游戏应用

“大球吃小球”游戏

Day11 - 文件和异常

  • 读文件 - 读取整个文件 / 逐行读取 / 文件路径

  • 写文件 - 覆盖写入 / 追加写入 / 文本文件 / 二进制文件

  • 异常处理 - 异常机制的重要性 / try-except代码块 / else代码块 / finally代码块 / 内置异常类型 / 异常栈 / raise语句

  • 数据持久化 - CSV文件概述 / csv模块的应用 / JSON数据格式 / json模块的应用

Day12 - 字符串和正则表达式

  • 字符串高级操作 - 转义字符 / 原始字符串 / 多行字符串 / in和 not in运算符 / is开头的方法 / join和split方法 / strip相关方法 / pyperclip模块 / 不变字符串和可变字符串 / StringIO的使用

  • 正则表达式入门 - 正则表达式的作用 / 元字符 / 转义 / 量词 / 分组 / 零宽断言 /贪婪匹配与惰性匹配懒惰 / 使用re模块实现正则表达式操作(匹配、搜索、替换、捕获)

  • 使用正则表达式 - re模块 / compile函数 / group和groups方法 / match方法 / search方法 / findall和finditer方法 / sub和subn方法 / split方法

  • 应用案例 - 使用正则表达式验证输入的字符串

Day13 - 进程和线程

  • 进程和线程的概念 - 什么是进程 / 什么是线程 / 多线程的应用场景

  • 使用进程 - fork函数 / multiprocessing模块 / 进程池 / 进程间通信

  • 使用线程 - thread模块 / threading模块 / Thread类 / Lock类 / Condition类 / 线程池

Day14 - 网络编程入门和网络应用开发

  • 计算机网络基础 - 计算机网络发展史 / “TCP-IP”模型 / IP地址 / 端口 / 协议 / 其他相关概念

  • 网络应用模式 - “客户端-服务器”模式 / “浏览器-服务器”模式

  • 基于HTTP协议访问网络资源 - 网络API概述 / 访问URL / requests模块 / 解析JSON格式数据

  • Python网络编程 - 套接字的概念 / socket模块 / socket函数 / 创建TCP服务器 / 创建TCP客户端 / 创建UDP服务器 / 创建UDP客户端 / SocketServer模块

  • 电子邮件 - SMTP协议 / POP3协议 / IMAP协议 / smtplib模块 / poplib模块 / imaplib模块

  • 短信服务 - 调用短信服务网关

Day15 - 图像和文档处理

  • 用Pillow处理图片 - 图片读写 / 图片合成 / 几何变换 / 色彩转换 / 滤镜效果

  • 读写Word文档 - 文本内容的处理 / 段落 / 页眉和页脚 / 样式的处理

  • 读写Excel文件 - xlrd模块 / xlwt模块

  • 生成PDF文件 - pypdf2模块 / reportlab模块

Day16~Day20 - Python语言进阶

  • 常用数据结构

  • 函数的高级用法 - “一等公民” / 高阶函数 / Lambda函数 / 作用域和闭包 / 装饰器

  • 面向对象高级知识 - “三大支柱” / 类与类之间的关系 / 垃圾回收 / 魔术属性和方法 / 混入 / 元类 / 面向对象设计原则 / GoF设计模式

  • 迭代器和生成器 - 相关魔术方法 / 创建生成器的两种方式 /

  • 并发和异步编程 - 多线程 / 多进程 / 异步IO / async和await

Day21~30 - Web前端入门

  • 用HTML标签承载页面内容

  • 用CSS渲染页面

  • 用JavaScript处理交互式行为

  • jQuery入门和提高

  • Vue.js入门

  • Element的使用

  • Bootstrap的使用

Day31~35 - 玩转Linux操作系统

  • 操作系统发展史和Linux概述

  • Linux基础命令

  • Linux中的实用程序

  • Linux的文件系统

  • Vim编辑器的应用

  • 环境变量和Shell编程

  • 软件的安装和服务的配置

  • 网络访问和管理

  • 其他相关内容

Day36~40 - 数据库基础和进阶

  • 关系型数据库MySQL

    • 关系型数据库概述

    • MySQL的安装和使用

    • SQL的使用

      • DDL - 数据定义语言 - create / drop / alter

      • DML - 数据操作语言 - insert / delete / update / select

      • DCL - 数据控制语言 - grant / revoke

    • 相关知识

      • 范式理论 - 设计二维表的指导思想

      • 数据完整性

      • 数据一致性

    • 在Python中操作MySQL
  • NoSQL入门

    • NoSQL概述

    • Redis概述

    • Mongo概述

Day41~55 - 实战Django

Day41 - 快速上手

  • Web应用工作原理和HTTP协议

  • Django框架概述

  • 5分钟快速上手

  • 使用视图模板

Day42 - 深入模型

  • 关系型数据库配置

  • 管理后台的使用

  • 使用ORM完成对模型的CRUD操作

  • Django模型最佳实践

  • 模型定义参考

Day43 - 静态资源和Ajax请求

  • 加载静态资源

  • 用Ajax请求获取数据

Day44 - 表单的应用

  • 表单和表单控件

  • 跨站请求伪造和CSRF令牌

  • Form和ModelForm

  • 表单验证

Day45 - Cookie和Session

  • 实现用户跟踪

  • cookie和session的关系

  • Django框架对session的支持

  • 视图函数中的cookie读写操作

Day46 - 报表和日志

  • 通过HttpResponse修改响应头

  • 使用StreamingHttpResponse处理大文件

  • 使用xlwt生成Excel报表

  • 使用reportlab生成PDF报表

  • 使用ECharts生成前端图表

  • 配置日志和Django-Debug-Toolbar

Day47 - 中间件的应用

  • 什么是中间件

  • Django框架内置的中间件

  • 自定义中间件及其应用场景

Day48 - 前后端分离开发入门

  • 返回JSON格式的数据

  • 用Vue.js渲染页面

Day49 - RESTful架构和DRF入门 Day50 - RESTful架构和DRF进阶 Day51 - 使用缓存

  • 网站优化第一定律

  • 在Django项目中使用Redis提供缓存服务

  • 在视图函数中读写缓存

  • 使用装饰器实现页面缓存

  • 为数据接口提供缓存服务

Day52 - 文件上传和富文本编辑

  • 文件上传表单控件和图片文件预览

  • 服务器端如何处理上传的文件

  • 富文本编辑器概述

  • wangEditor的使用

Day53 - 短信和邮件

  • 常用短信网关平台介绍

  • 使用螺丝帽发送短信

  • Django框架对邮件服务的支持

Day54 - 异步任务和定时任务

  • 网站优化第二定律

  • 配置消息队列服务

  • 在项目中使用celery实现任务异步化

  • 在项目中使用celery实现定时任务

Day55 - 单元测试和项目上线

  • Python中的单元测试

  • Django框架对单元测试的支持

  • 使用版本控制系统

  • 配置和使用uWSGI

  • 动静分离和Nginx配置

  • 配置HTTPS

Day56~60 - 实战Flask

Day56 - Flask入门 Day57 - 模板的使用 Day58 - 表单的处理 Day59 - 数据库操作 Day60 - 项目实战

Day61~65 - 实战Tornado

Day61 - 预备知识

  • 并发编程

  • I/O模式和事件驱动

Day62 - Tornado入门

  • Tornado概述

  • 5分钟上手Tornado

  • 路由解析

  • 请求处理器

Day63 - 异步化

  • aiomysql和aioredis的使用

Day64 - WebSocket的应用

  • WebSocket简介

  • WebSocket服务器端编程

  • WebSocket客户端编程

  • 项目:Web聊天室

Day65 - 项目实战

  • 前后端分离开发和接口文档的撰写

  • 使用Vue.js实现前端渲染

  • 使用ECharts实现报表功能

  • 使用WebSocket实现推送服务

Day66~75 - 爬虫开发

Day66 - 网络爬虫和相关工具

  • 网络爬虫的概念及其应用领域

  • 网络爬虫的合法性探讨

  • 开发网络爬虫的相关工具

  • 一个爬虫程序的构成

Day67 - 数据采集和解析

  • 数据采集的标准和三方库

  • 页面解析的三种方式:正则表达式解析 / XPath解析 / CSS选择器解析

Day68 - 存储数据

  • 如何存储海量数据

  • 实现数据的缓存

Day69 - 并发下载

  • 多线程和多进程

  • 异步I/O和协程

  • async和await关键字的使用

  • 三方库aiohttp的应用

Day70 - 解析动态内容

  • JavaScript逆向工程

  • 使用Selenium获取动态内容

Day71 - 表单交互和验证码处理

  • 自动提交表单

  • Cookie池的应用

  • 验证码处理

Day72 - Scrapy入门

  • Scrapy爬虫框架概述

  • 安装和使用Scrapy

Day73 - Scrapy高级应用

  • Spider的用法

  • 中间件的应用:下载中间件 / 蜘蛛中间件

  • Scrapy对接Selenium抓取动态内容

  • Scrapy部署到Docker

Day74 - Scrapy分布式实现

  • 分布式爬虫的原理

  • Scrapy分布式实现

  • 使用Scrapyd实现分布式部署

Day75 - 爬虫项目实战

  • 爬取招聘网站数据

  • 爬取房地产行业数据

  • 爬取二手车交易平台数据

Day76~90 - 数据处理和机器学习

Day76 - 机器学习基础
Day77 - Pandas的应用
Day78 - NumPy和SciPy的应用
Day79 - Matplotlib和数据可视化
Day80 - k最近邻(KNN)分类
Day81 - 决策树
Day82 - 贝叶斯分类
Day83 - 支持向量机(SVM)
Day84 - K-均值聚类
Day85 - 回归分析
Day86 - 大数据分析入门
Day87 - 大数据分析进阶
Day88 - Tensorflow入门
Day89 - Tensorflow实战
Day90 - 推荐系统

Day91~100 - 团队项目开发

第91天:团队项目开发准备

  1. 软件过程模型
  • 经典过程模型(瀑布模型)

    • 可行性分析(研究做还是不做),输出《可行性分析报告》。

    • 需求分析(研究做什么),输出《需求规格说明书》和产品界面原型图。

    • 概要设计和详细设计,输出概念模型图、物理模型图、类图、时序图等。

    • 编码 / 测试。

    • 上线 / 维护。

    • 敏捷开发(Scrum)- 产品所有者、Scrum Master、研发人员 - Sprint

      • 产品的Backlog(用户故事、产品原型)。

      • 计划会议(评估和预算)。

      • 日常开发(站立会议、番茄工作法、结对编程、测试先行、代码重构……)。

      • 修复bug(问题描述、重现步骤、测试人员、被指派人)。

      • 评审会议(Showcase)。

      • 回顾会议(当前周期做得好和不好的地方)。

补充:敏捷软件开发宣言

  • 个体和互动 高于 流程和工具

    • 工作的软件 高于 详尽的文档

    • 客户合作 高于 合同谈判

    • 响应变化 高于 遵循计划

另外,进步最大的阶段,还是学校安排做项目实训的时候,同学们几人一组,组成开发团队,然后分析项目,划分任务,根据平时所学,进行实战。会给大家提前进入职场的感觉,当然过程中会遇到大大小小的问题,同学们一起商量,互相帮助,最后项目成型以后,真的是觉得很有成就感,进步也是最快的。

在整个学习过程当中,我是没有碰到什么瓶颈的,因为我的学习习惯就是不去积压问题,发现不清楚的点,第一时间去解决,所以学起来没有多困难。通过这半年的学习,除了专业技能的明显提升以外,家人都说我比之前更懂事了,生活也变得更规律,对时间和知识的管理更加的完善,对于我个人来说,的确变化很大。

python刷题

下面是学校帮我们总结的各个大公司还有小公司python相关的面试题。我也认认真真全部刷完了,篇幅原因,答案没有列出来。感兴趣的朋友,可以扫描下方二维码,前往免费领取!
知乎百万热议:python到底是自学好还是报班好_第1张图片

一、Python 基础

(一) Python 基础语法

  1. Python有哪些特点和优点?

  2. 简述解释型和编译型编程语言?

  3. Python解释器种类以及特点

  4. python常见的PEP8规范

  5. 通过代码实现如下进制转换

  6. 三元运算规则以及应用场景

  7. 列举 Python2和Python3的区别【Python基础语法】

  8. is和==的区别

  9. try except用法和作用

  10. Python LEGB规则

  11. python简单的列表去重

  12. 区分break,continue和pass?

  13. 什么是python迭代器?

  14. 如何在python中写注释?

  15. 如何在python中注释多行?

  16. 什么是Python中的文档Docstrings?

  17. Python是通用编程语言吗?

  18. Python是如何解释语言的?

  19. 什么是pep?

  20. Python中的命名空间是什么?

  21. 什么是PYTHONPATH?

  22. Python中的局部变量和全局变量是什么?

  23. python是否区分大小写?

  24. 如何在Windows上安装Python并设置路径变量?

  25. python中是否需要缩进?

  26. 列举布尔值为False的常见值

  27. 怎样声明多个变量并赋值?

  28. 其中哪一个是floor division?

  29. 标识符的最大可能长度是多少?

  30. 为什么不鼓励以下划线开头的局部变量名?

  31. 以下哪项是无效声明?

  32. 以下哪项是无效声明?

  33. 以下是什么输出?

  34. a=1, b=2, 不用中间变量交换a和b的值.

  35. 请写出打印结果

  36. A、B两人分别在两座岛上。B生病了,A有B所需要的药。C有一艘小船和一个可以上锁的箱子。C愿意在A和B之间运东西,但东西只能放在箱子里。只要箱子没被上锁,C都会偷走箱子里的东西,不管箱子里有什么。如果A和B各自有一把锁和只能开自己那把锁的钥匙,A应该如何把东西安全递交给B?

  37. 有25匹马,速度都不同,但每匹马的速度都是定值。现在只有5条赛道,无法计时,即每赛一场最多只能知道5匹马的相对快慢。问最少赛几场可以找出25匹马中速度最快的前3名?

  38. 介绍一下except的用法和作用?

  39. Python中pass语句的作用是什么?

  40. 单引号,双引号,三引号的区别

  41. 浮点数运算

  42. 介绍一下except的用法和作用?

  43. Python中pass语句的作用是什么?

  44. 反转一个整数,例如-123 --> -321

  45. 一行代码实现1-100之和

  46. Python-遍历列表时删除元素的正确做法

  47. 字符串 “123” 转换成 123,不使用内置api,例如 int()

  48. 求出列表所有奇数并构造新列表

  49. 用一行python代码写出1+2+3+10248

  50. python常见的列表推导式?

  51. Python中pass语句的作用是什么?

  52. 如何交换两个变量的值?

  53. Python中pass语句的作用是什么?

  54. Python区分大小写吗?

  55. Python中的标识符长度能有多长?

  56. Python中的pass语句是什么?

  57. 解释一下Python中的//,%和 ** 运算符

  58. 在Python中有多少种运算符?解释一下算数运算符。

  59. 解释一下Python中的关系运算符

  60. 解释一下Python中的赋值运算符

  61. 解释一下Python中的逻辑运算符

  62. 解释一下Python中的成员运算符

  63. 解释一下Python中的身份运算符

  64. 讲讲Python中的位运算符

  65. 在Python中如何使用多进制数字?

  66. 怎样声明多个变量并赋值?

  67. PYTHONPATH变量是什么?

  68. 在Python中如何声明一条注释?

  69. 什么是Python中的连接(concatenation)?

  70. 请用一行代码 实现将1-N 的整数列表以3为单位分组

  71. 避免转义给字符串加哪个字母表示原始字符串?

  72. X是什么类型?

  73. 单引号、双引号、三引号用法

  74. int(“1.4”),int(1.4)输出结果?

  75. 列举3条以上PEP8编码规范

  76. IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分别代表什么异常

  77. 递归求和

  78. 介绍一下except的用法和作用?

  79. Python中pass语句的作用是什么?

  80. Json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?

  81. Python写9*9乘法表的两种简单方法

(二) 文件操作

  1. 大数据的文件读取

  2. 在python中编译和链接的过程是什么?

  3. 请写一个Python逻辑,计算一个文件中的大写字母数量

  4. 介绍一下except的用法和作用?

  5. 要打开文件c:\ scores.txt进行编写,我们使用:

  6. 以下是什么输出?

  7. 何时执行try-except-else的else部分?

  8. 简述with方法打开处理文件帮我我们做了什么?

  9. 用python删除文件和用linux命令删除文件方法

  10. 写一段自定义异常代码

  11. 举例说明异常模块中try except else finally的相关意义

  12. IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分别代表什么异常

  13. r、r+、rb、rb+文件打开模式区别

  14. 深拷贝和浅拷贝之间的区别是什么?

  15. 请写一个Python逻辑,计算一个文件中的大写字母数量

  16. 如何用Python找出你目前在哪个目录?

  17. 如何以相反顺序展示一个文件的内容?

  18. 4G 内存怎么读取一个 5G 的数据?

  19. 说明一下 os.path 和 sys.path 分别代表什么?

  20. Python 中的 os 模块常见方法?

  21. python的read() 、readline()、readlines()、xreadlines()

  22. 使用代码实现查看列举目录下的所有文件

  23. 如何在Python中删除文件?

  24. 设计实现遍历目录与子目录,抓取.pyc文件

  25. 简述read、readline、readlines的区别?

  26. 用python删除文件和用linux命令删除文件方法

  27. 简述with方法打开处理文件帮我我们做了什么?

  28. 写一段自定义异常代码

(三) 模块与包

  1. 深拷贝和浅拷贝的区别是什么?

  2. 如何在Python中随机化列表中的项目?

  3. 如何用Python来发送邮件?

  4. Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

  5. Python里面如何生成随机数?

  6. 介绍一下Python中webbrowser的用法?

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

  8. 列出5个python标准库

  9. 利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

  10. 生成0-100的随机数

  11. 如何在Python中创建自己的包?

  12. 常用的 Python 标准库都有哪些?

  13. 输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准库)

  14. Python的 sys 模块常用方法?

  15. Python里面如何拷贝一个对象?

  16. 简述Python的深浅拷贝以及应用场景

  17. 如何安装第三方模块?以及用过哪些第三方模块?

  18. 常用模块都有那些?

  19. 什么是python模块?Python中有哪些常用的内置模块?

  20. 如何在Python中生成随机数?

  21. range&xrange有什么区别?

  22. Python里面如何生成随机数?

  23. 在Python中如何生成一个随机数?

  24. 利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

  25. 列出5个python标准库

  26. 生成0-100的随机数

  27. 如何安装第三方模块?以及用过哪些第三方模块?

  28. 常用模块都有那些?

(四) 数据类型

  1. Python里面如何实现tuple和list的转换?

  2. 列表和元组有什么不同?

  3. 什么是负指数,为什么使用它们?

  4. 单引号,双引号,三引号的区别?

  5. 有两个序列a,b,大小都为n,序列元素的值任意整形数,无序?

  6. Python中的标识符长度能有多长?

  7. 在Python中如何使用多进制数字?

  8. 元组的解封装是什么?

  9. Python中, list, tuple, dict, set有什么区别, 主要应用在什么样的场景?

  10. 以下哪个语句创建字典?(多个正确的答案可能)

  11. 假设list1是[2,33,222,14,25],什么是list1 [-1]?

  12. 单引号,双引号,三引号的区别

  13. 怎样获取字典中所有键的列表?

  14. 字典如何删除键和合并两个字典

  15. python实现列表去重的方法

  16. python内建数据类型有哪些

  17. python中生成随机整数、随机小数、0–1之间小数方法

  18. 列出python中可变数据类型和不可变数据类型,并简述原理

  19. 字典根据键从小到大排序

  20. 列表推导式求列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  21. a=(1,)b=(1),c=(“1”) 分别是什么类型的数据?

  22. 两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]

  23. [[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]

  24. x=“abc”,y=“def”,z=[“d”,“e”,“f”],分别求出x.join(y)和x.join(z)返回的结果

  25. a="hello"和b="你好"编码成bytes类型

  26. [1,2,3]+[4,5,6]的结果是多少?

  27. 求三个方法打印结果

  28. 计算代码运行结果,zip函数历史文章已经说了,得出[(“a”,1),(“b”,2),(“c”,3),(“d”,4),(“e”,5)]

  29. python中copy和deepcopy区别

  30. 举例sort和sorted对列表排序,list=[0,-1,3,-10,5,9]

  31. 对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函数从小到大排序

  32. 使用lambda函数对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为

  33. 列表嵌套字典的排序,分别根据年龄和姓名排序

  34. 列表嵌套元组,分别按字母和数字排序

  35. 列表嵌套列表排序,年龄数字相同怎么办?

  36. 根据键对字典排序(方法一,zip函数)

  37. 根据键对字典排序(方法二,不用zip)

  38. 列表推导式、字典推导式、生成器

  39. 最后出一道检验题目,根据字符串长度排序,看排序是否灵活运用

  40. python字典和json字符串相互转化方法

  41. 求两个列表的交集、差集、并集

  42. python中读取Excel文件的方法

  43. 列表和元组之间的区别是?

  44. Python中的字典是什么?

  45. 什么是负索引?

  46. 如何以就地操作方式打乱一个列表的元素?

  47. 解释Python中的join()和split()函数

  48. 怎样获取字典中所有键的列表?

  49. 元组的解封装是什么?

  50. Python支持什么数据类型?

  51. docstring是什么?

  52. 什么是切片?

  53. 什么是namedtuple ?

  54. 在Python中怎样将字符串转换为整型变量?

  55. Python中的不可变集合(frozenset)是什么?

  56. 什么是迭代器?

  57. 请按alist中元素的age由大到小排序

  58. 下面代码的输出结果将是什么?

  59. 写一个列表生成式,产生一个公差为11的等差数列

  60. 给定两个列表,怎么找出他们相同的元素和不同的元素?

  61. 请写出一段python代码实现删除list里面的重复元素?

  62. 给定两个list A,B ,请用找出A,B中相同与不同的元素

  63. Python里面如何实现tuple和list的转换?

  64. 请写出一段Python代码实现删除一个list里面的重复元素

  65. 字符串、列表、元组、字典每个常用的5个方法(整型,浮点,字符串,布尔型,列表、元组、字典、集合、日期)

  66. Python里面如何实现tuple和list的转换?

  67. 请写出一段Python代码实现删除一个list里面的重复元素

  68. 如何在一个function里面设置一个全局的变量?

  69. 列表的扁平化和降维

  70. 如果将一个列表传入函数中,在函数中修改后,全局的列表会被修改吗?

  71. 什么是Python中的类型转换?

  72. Python数组和列表有什么区别?

  73. [:: - 1}表示什么?

  74. NumPy中有哪些操作Python列表的函数?

  75. 按字典中的value值进行排序

  76. 字典和json的区别

  77. 可变、不可变类型

  78. 常用的字符串格式化

  79. 字符串驻留机制

  80. 删除list中重复元素

  81. 列举字符串、列表、元组、字典的5个常用方法

  82. 什么是反射,以及应用场景

  83. 列表和迭代器的区别

  84. enumerate的作用

  85. 描述数组、链表、队列、堆栈的区别?

(五)企业面试题

  1. 分别从前端、后端、数据库阐述web项目的性能优化

  2. 我们都知道现在Python很火,但是对于一门技术我们不光要知道它的优点,也要知道它的缺点,请谈谈Python的不足之处。

  3. 如果你困在了死循环里,怎么打破它?

  4. 请谈谈.pyc文件和.py文件的不同之处

  5. 请反转字符串 “aStr”?

  6. 将字符串 “k:1 |k1:2|k2:3|k3:4”,处理成字典 {k:1,k1:2,…}

  7. 利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法.

  8. 请设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间

  9. 解释一下python的and-or语法

  10. 你在爬虫过程中,都是怎么解决反爬的,爬取多少数据,用了多长时间?

  11. 爬取这些数据都用来做什么的?怎么交付给公司?客户是谁?爬取数据的影响因素?

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

  13. 说一下 mysql 的原理?

  14. 数据库索引

  15. 数据库怎么优化查询效率?

  16. 简单谈谈ACID,并解释每一个特性。

  17. Python的主要功能是什么?

  18. 装饰器的写法以及应用场景

  19. 异常处理写法以及如何主动跑出异常(应用场景)

  20. isinstance作用以及应用场景?

  21. json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型?

  22. 线上服务可能因为种种原因导致挂掉怎么办?

  23. 如何提高python的运行效率

  24. 线上服务可能因为种种原因导致挂掉怎么办?

  25. 如何提高python的运行效率

  26. 字符串的操作题目

  27. 介绍Cython,Pypy Cpython Numba各有什么缺点

  28. 手写一个判断时间的装饰器

  29. 生成器,迭代器的区别?

  30. Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

  31. 如何判断是函数还是方法?

  32. 为什么函数名字可以当做参数用?

  33. 分别从前端、后端、数据库阐述web项目的性能优化

  34. python新式类和经典类的区别?

  35. 线上服务可能因为种种原因导致挂掉怎么办?

  36. 如何提高python的运行效率

  37. Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

  38. 如何判断是函数还是方法?

二、Python 高级

(一) 元类

  1. @property的用法

  2. new和init的区别

  3. 如何实现一个单例

  4. python查找对象属性的顺序

  5. 什么是init?

  6. Python中的self是什么?

  7. 深拷贝和浅拷贝有什么区别?

  8. 什么是猴子补丁?

  9. 字典推导式

  10. super函数的具体用法和场景

  11. Python中类方法、类实例方法、静态方法有何区别?

  12. 遍历一个object的所有属性,并print每一个属性名?

  13. 写一个类,并让它尽可能多的支持操作符?

  14. 请描述抽象类和接口类的区别和联系

  15. Python中如何动态获取和设置对象的属性?

  16. 对设计模式的理解,简述你了解的设计模式?

  17. 单例模式的应用场景有那些?

  18. 对装饰器的理解,并写出一个计时器记录方法执行性能的装饰器?

  19. Python的魔法方法

  20. 什么是Python monkey补丁?

  21. 阅读下面的代码,它的输出结果是什么?

  22. 写一个单列模式

  23. 什么是猴子补丁?

  24. 描述元类的概念。Python有没有接口?元类和Java的接口有什么异同?

(二)内存管理与垃圾回收机制

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

  2. 对象的引用计数机制

  3. 垃圾回收

  4. 内存池机制

  5. 当Python退出时,为什么不清除所有分配的内存?

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

  7. python垃圾回收机制

  8. 当退出 Python 时是否释放所有内存分配?

  9. 如何获取任何网址或网页的Google缓存时限?

  10. Python中变量的作用域?(变量查找顺序)

  11. 哪些操作会导致Python内存溢出,怎么处理?

  12. 关于Python内存管理

  13. Python的内存管理机制及调优手段?【内存管理与垃圾回收机制】

  14. 内存泄露是什么?如何避免?

  15. 在Python中是如何管理内存的?

  16. 当退出Python时,是否释放全部内存?

  17. Python2 中 range 和 xrange 的区别?

  18. 浅拷贝会创建新对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用。

  19. python中交换两个数值

  20. 提高python运行效率的方法

  21. 简述python引用计数机制

  22. 引用计数算法

  23. python垃圾回收机制

  24. Python是如何进行内存管理的

  25. Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

(三)函数

  1. 简述 yield和yield from关键字

  2. 大数据的文件读取

  3. 装饰器的作用和功能

  4. 装饰器的作用和功能

  5. 如何在Python中随机化列表中的元素?

  6. 什么是pickling和unpickling?

  7. python中的生成器是什么?

  8. 你如何把字符串的第一个字母大写?

  9. 如何将字符串转换为全小写?

  10. operators中的is、not和in各有什么功能?

  11. Python中help()和dir()函数的用法是什么?

  12. 为什么使用* args,** kwargs?

  13. len()函数有什么作用?

  14. 在Python中split(),sub(),subn()功能。

  15. Python中的函数是什么?

  16. 什么是lambda函数?

  17. 如何删除python数组的值?

  18. lambda表达式格式以及应用场景

  19. pass的作用

  20. *arg和**kwarg作用

  21. Python中的yield用法

  22. 列举常见的内置函数

  23. python递归的最大层数

  24. 什么是lambda函数?它有什么好处?

  25. 编程用sort进行排序,然后从最后一个元素开始判断

  26. 什么是lambda函数?它有什么好处?

  27. fun(args,kwargs)中的args,kwargs什么意思?

  28. python2和python3的range(100)的区别

  29. 一句话解释什么样的语言能够用装饰器?

  30. 请写出一段Python代码实现删除一个list里面的重复元素

  31. lambda匿名函数表达式及应用场景

  32. python的递归最大层数

  33. 常见的内置函数

  34. filter,map,reduce的作用

  35. 什么是闭包

  36. 装饰器

  37. 统计函数的执行效率

  38. Yield关键字和生成器

  39. 装饰器的作用和功能

  40. python 中 yield 的用法?

  41. 介绍一下Python下range()函数的用法?

  42. 装饰器的作用和功能

  43. Python中的yield用法

  44. 你知道几种排序,讲一讲你最熟悉的一种?

  45. 什么是lambda函数?它有什么好处?

  46. 编程用sort进行排序,然后从最后一个元素开始判断

  47. 介绍一下Python下range()函数的用法?

  48. Python里面如何生成随机数?

  49. 是否使用过functools中的函数?其作用是什么?

  50. 给定一个任意长度数组,实现一个函数

  51. 阅读一下代码他们的输出结果是什么?

  52. 请写出一个函数满足以下条件

  53. 什么是Hash(散列函数)?

  54. python函数重载机制?

  55. 编写函数的4个原则

  56. 函数调用参数的传递方式是值传递还是引用传递?

  57. 使用Python内置的filter()方法来过滤?

  58. 回调函数,如何通信的?

  59. map(lambda x:xx,[y for y in range(3)])的输出?

  60. hasattr() getattr() setattr() 函数使用详解?

  61. 一句话解决阶乘函数?

  62. 什么是lambda函数? 有什么好处?

  63. 递归函数停止的条件?

  64. python写一个匿名函数求两个数的和

  65. 解释以下什么是闭包?

  66. 函数装饰器有什么作用?

  67. hon下range()函数的用法?

  68. 怎么移除一个字符串中的前导空格?

  69. 怎样将字符串转换为小写?

  70. 在Python中怎样获取输入?

  71. 怎样将字符串中第一个字母大写?

  72. 如何检查字符串中所有的字符都为字母数字?

  73. 什么是函数?

  74. 解释拉姆达表达式,什么时候会用到它?

  75. 什么是递归?

  76. 什么是生成器?

  77. 请说说生成器和迭代器之间的区别

  78. 函数zip()的是干嘛的?

  79. 解释Python的参数传递机制

  80. 解释Python中的help()和dir()函数

  81. 如何计算一个字符串的长度?

  82. 简述 yield和yield from关键字。

  83. 列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]

  84. python中生成随机整数、随机小数、0–1之间小数方法

  85. python中断言方法举例

  86. s = “ajldjlajfdljfddd”,去重并从小到大排序输出"adfjl"

  87. 用lambda函数实现两个数相乘

  88. filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  89. log日志中,我们需要用时间戳记录error,warning等的发生时间,请用datetime模块打印当前时间戳 “2018-04-01 11:38:54

  90. 举例说明zip()函数用法

  91. 求三个方法打印结果

  92. 简述any()和all()方法

  93. a = " hehheh ",去除收尾空格

  94. 统计字符串中某字符出现次数

  95. 字符串转化大小写

  96. 用两种方法去空格

  97. lambda匿名函数好处

  98. python传参数是传值还是传址?

  99. 请将[i for i in range(3)]改成生成器

  100. 你知道几种排序,讲一讲你最熟悉的一种?

  101. Python中的yield用法

  102. 什么是lambda函数?它有什么好处?

  103. 编程用sort进行排序,然后从最后一个元素开始判断

  104. 介绍一下Python下range()函数的用法?

  105. Python里面如何生成随机数?

  106. 是否使用过functools中的函数?其作用是什么?

  107. 简述 yield和yield from关键字。

  108. lambda表达式格式以及应用场景

  109. 什么是lambda函数?它有什么好处?

  110. 编程用sort进行排序,然后从最后一个元素开始判断

(四) 面向对象

  1. 多继承写法以及继承顺序问题

  2. 析构函数

  3. 继承,在执行析构函数时,先执行父类的,还是先执行子类的?

  4. 继承时,所有的方法都会被继承吗?

  5. 谈一下单例模式。

  6. 浅copy和深copy的区别

  7. Python中的self关键字

  8. 多态

  9. 面向对象深度优先和广度优先是什么?

  10. 面向对象中super的作用?

  11. 列举面向对象中带双下划线的魔术方法?

  12. 面向对象中的property属性、类方法、静态方法?

  13. 列举面向对象中的特殊成员以及应用场景

  14. 什么是反射?以及应用场景?

  15. 用尽量多的方法实现单例模式。

  16. Python有OOps概念吗?

  17. Python中的闭包是什么?

  18. 解释一下Python中的继承

  19. 谈谈你对面向对象的理解?

  20. 面向对象中怎么实现只读属性?

  21. 简述面向对象中new和init区别

  22. 如何在一个函数内部修改全局变量

  23. 列出几种魔法方法并简要介绍用途

  24. 用一个例子解释Python中的继承

  25. 解释一下Python中的继承

  26. Python中的闭包是什么?

  27. 面向对象深度优先和广度优先是什么?

  28. 面向对象中super的作用?

  29. 面向对象中的property属性、类方法、静态方法?

  30. 列举面向对象中的特殊成员以及应用场景

  31. 什么是反射?以及应用场景?

  32. 用尽量多的方法实现单例模式

  33. 迭代器和生成器的区别

  34. 多重继承
    Python面试宝典

最后,文章中所涉及到的一些学习视频、学习资料或是项目,都可以免费分享出来,扫一扫下方CSDN官方认证微信二维码即可【100%免费获取】。
知乎百万热议:python到底是自学好还是报班好_第2张图片

面试找工作

后来毕业了,找工作,找工作我就不提了,刚培训出来能有什么水平,凡是培训班出来的应该都知道包装简历,包装作品吧,我也不例外,这里讲这些包装方面的东西可能是会让大家学坏,但是面对残酷的竞争,如果你技术能力没有那么高,为了你在大城市每天的房租,交通,吃喝,你不得不采用这些套路方法,让你快速找到工作养活自己,毕业后找工作找了3天,第一份工作工资是11.5K,活了几十年,第一次工资破万,此处该有掌声,可能破万的工资不仅仅是我的一个转折点,更是很多像我一样转行到计算机的朋友的目标。(插播个题外话,有幸能看到这里的同学不知道觉不觉得这篇是培训班广告软文图片,觉得是软文的下方点个赞)

总结

对于转行做程序员,我能成功靠什么?两个关键词,决心和毅力!

如果你下定决心,做了选择,就一定要坚持到最后。

如今我已成功转行,现在在这个行业只算得上一个新人,但随着岁月增长,我会慢慢成为一名“老猿”,但我也会依然把自己这颗学习的心保持到老。同样的,我也希望你在青春迷茫时,能不要放弃,因为每个人,都有柳暗花明的那一刻。

你可能感兴趣的:(python面试,转行,python开发,python,开发语言,后端,职场和发展,程序人生)