面试

吐血整理!关于Python的基础知识第一部分!(附网盘链接)

只谈情不闲聊 提交于 2020-11-24 07:23:09
今天跟大家分享的是关于Python的基础知识第一部分, 文末获取网盘链接 1.计算机语言 2.运行Python 3.Python语言特点 4.基本规则 5.变量赋值 点击链接获取完整文档哦 链接: https://pan.baidu.com/s/1W_f96j1q_yTBAAF-mSUDCQ 提取码:2zd9 ※部分文章来源于网络,如有侵权请联系删除;更多文章和资料|点击后方文字直达 ↓↓↓ 100GPython自学资料包 阿里云K8s实战手册 [阿里云CDN排坑指南] CDN ECS运维指南 DevOps实践手册 Hadoop大数据实战手册 Knative云原生应用开发指南 OSS 运维实战手册 云原生架构白皮书 Zabbix企业级分布式监控系统源码文档 10G大厂面试题戳领 来源: oschina 链接: https://my.oschina.net/u/4601114/blog/4696445

Python函数式编程 入门必备

久未见 提交于 2020-11-24 06:13:59
总第273篇原创 1 Python 函数式编程 python 支持函数式编程,提到函数式编程,大家首先想到的是多个函数内嵌。的确是这样。不过,要想入门函数式编程,里面涉及到的闭包,是不得不掌握的,换句话说,如果不了解闭包就使用函数式编程,那么,函数式编程的功能特性可能不会完全体现出来。 今天用专题的形式,完整的总结下函数式编程中这个非常重要的特性:闭包,并提供PDF下载,如有补充指正,请留言,万分感激。 本资料为 Python与算法社区 出品,如需转载,请注明来源。 为什么一直在啰嗦闭包,我们都知道函数式编程中闭包处处存在,Python也支持函数式编程,自然也就存在闭包。 利用闭包的性质,我们可实现一些比较接地气的功能,调用起来比较容易理解的。 下面,从闭包是什么,闭包示例,使用坑点展开。 2 闭包是什么 闭包是由 函数及其相关的引用环境组合而成的实体 ,一句话:闭包 = 函数+引用环境。 函数式编程中,当 内嵌函数体 内引用到 体外的变量 时,将会连同这些变量(引用环境)和内嵌函数体,一块打包成一个整体返回。 3 闭包示例 编写一个能体现闭包特性,使用闭包给我们带来便利的经典例子。 这个例子是这样,实现机器人robot位置的实时更新功能。 定义机器人的初始位置,然后返回一个move函数,它能帮助我们实现机器人x, y 某个或两个方向上的移动,并打印出当前的位置。 构建一个外部函数

MySQL发号问题的分析和改进

允我心安 提交于 2020-11-24 05:28:39
这是学习笔记的第 2253 篇文章 读完需要 5 分钟 速读仅需3分钟 关于发号器的使用,其实有一个大背景,那就是关于主键的一些设计问题,在MySQL中如果一张表没有主键,实际的数据处理就有点麻烦了。 因为在InnoDB存储引擎中,表都是按照主键的顺序进行存放的,我们叫做聚簇索引表或者索引组织表(IOT) (1)显式的创建主键Primary key。 (2)判断表中是否有非空唯一索引,如果有,则为主键。 (3)如果都不符合上述条件,则会生成UUID的一个隐式主键(6字节大) 可以使用类似的SQL来看到这个隐藏列,select _rowid from test ; 这和主键有什么关系?主要是因为有些时候我们创建主键就是为了创建而创建,没有实际的业务含义,所以会形成一种使用习惯,那就是启用自增列。 自增列的问题很多,有些几句话还说不清楚,大体有如下的一些问题 自增列没有业务含义 过度依赖自增列 自增列和状态值主键并存,反而影响业务逻辑和性能 MySQL历史遗留bug,在MySQL 8.0该问题才修复 到了这里,我们的需求也基本明确了,我们所说的发号 器其实就是要确保每次取到的ID号都是唯一的,当然也显而易见是趋势递增的。 我来说一个初版的发号器实现,假设我们创建一张表test_inc,假设按照业务逻辑,自增列的初始值为1000,则建表语句为: create table test_inc

自学转行成前端工程师,三面拿下字节跳动offer

社会主义新天地 提交于 2020-11-24 04:43:42
我是一名前端工程师,通俗地说,就是一只程序猿。 虽然大学专业也的确是IT相关专业,但求学期间划水四年,侥幸未挂科并顺利毕业,找的第一份工作是软件公司的销售类职位,想着多少也算专业相关愉快入职,却无论如何适应不了酒桌上的觥筹交错,工作得痛苦不堪。某天一冲动辞了职,然后因为下一步没有方向开始了漫长的失业生涯。 我已经记不太清楚为什么自己当时要选择前端开发这一方向了。不过前端入门确实简单,不需要一点编程知识你就能做出一个漂亮的静态页面,甚至还能做出动画效果,总而言之,非常容易让人有成就感。或许这就是原因吧。 学习了差不多半年,主要是看网上的视频课程,买了一些学习前端的最新的书籍,刷了很多公司面试题,我开始找工作,然后发现岗位虽然不少,但邀请面试的少之又少。 转行后的第一份工作 第一个面试机会来自一家初创公司,面试之前我紧张到胃不舒服。面试官直截了当地问我一天能做几个页面。我愣住了,回答从未测试过,所以不好说,于是他现场让我做了一个简单的页面当作测试,然后对速度表示大概满意,随即示意我通过了面试。 我对这样的轻率感到大为吃惊,又了解到公司并没有其他前端人员,思量之下还是拒绝了这个机会。 在面试我现在所在的这家公司的时候,总监面试我的时候问:“为什么之前一直自学,现在却决定出来找工作?” 我回答:“因为没钱了要过不下去了。” 后来公司老板面试我的时候,问我:“有没有自己学习能力不错的实际证明

使用ActiveMQ实现简易聊天功能

若如初见. 提交于 2020-11-24 04:41:49
一 什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。目前使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ 二 为什么要用消息队列 使用消息队列主要有两点好处: 1.通过异步处理提高系统性能(削峰、减少响应所需时间); 2.降低系统耦合性。如果在面试的时候你被面试官问到这个问题的话,一般情况是你在你的简历上涉及到消息队列这方面的内容,这个时候推荐你结合你自己的项目来回答。 三 ActiveMQ ActiveMQ 是基于 JMS 规范实现的。 JMS消息列队有两种消息模式,一种是点对点的消息模式,还有一种是订阅的模式。 四 实现 ActiveMQ下载地址: http://activemq.apache.org/components/classic/download/ 解压缩apache-activemq-5.xxx-bin.zip到一个目录 启动ActiveMQ:运行C:\ apache-activemq-5.xxx\bin\activemq.bat 浏览器中输入: http://localhost:8161/admin/ 测试启动情况 使用点对点方式实现聊天功能 编写消息发送类和接收类

写给小白看的线程和进程,高手勿入

蓝咒 提交于 2020-11-24 03:34:25
计算机的核心是CPU,它承担了计算机的所有计算任务,CPU就像一个工厂,时刻在运行着,而操作系统管理着计算机,负责任务的调度、资源的分配和管理。 图片来源于网络 进程和线程都是计算机操作系统中的基本概念,在进程和线程之上有程序,应用程序是具有某种功能的程序,运行在操作系统中。 例如,我们的桌面上都会安装QQ、酷狗音乐、微信......等,这些就是程序。当我们点击QQ运行时,QQ正常运行,此时就会开启一个进程。 因此, 「程序是静态的,而进程是动态的,程序是作为进程的运行的载体,进程会随时间,会在某一时刻消亡。」 图片来源于网络 我们运行程序开启的进程,我们可以在任务管理器中可以查看,当我们再次点击QQ,登陆另一个账号的时候又会开启一个进程。 打个比喻:前面我们把CPU比作一个工厂,那么程序就好像工厂里面的车间。 图片来源于网络 但是,车间是静态的,车间中有多条流水线,进程就好比流水线,流水线是动态执行的,一个车间可以同时运行多条流水线,也可以只执行一条流水线或者一条流水线都不执行。 总结来说: 「程序可以包含多个进程,多个进程并发执行,相互独立,因此,进程也是系统进行资源分配和调度基本单位。」 当然,程序也可以没有启动进程,就好比车间中没有流水线,因为程序是静态的,而进程的有无就好比层间的流水线是否存在。 图片来源于网络 一条流水线上可以有很多工人,那些工人就好比是线程

这一次,彻底弄懂 JavaScript 执行机制

时间秒杀一切 提交于 2020-11-24 03:33:46
不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论: javascript是按照语句出现的顺序执行的 看到这里读者要打人了:我难道不知道js是一行一行执行的?还用你说?稍安勿躁,正因为js是一行一行执行的,所以我们以为js都是这样的: let a = '1' ; console .log(a); let b = '2' ; console .log(b); 然而实际上js是这样的: setTimeout( function ( ) { console .log( '定时器开始啦' ) }); new Promise ( function ( resolve ) { console .log( '马上执行for循环啦' ); for ( var i = 0 ; i < 10000 ; i++){ i == 99 && resolve(); } }).then( function ( ) { console .log( '执行then函数啦' ) }); console .log( '代码执行结束' ); 依照js是按照语句出现的顺序执行这个理念,我自信的写下输出结果: //"定时器开始啦" //"马上执行for循环啦" //

写给小白看的线程和进程,高手勿入

左心房为你撑大大i 提交于 2020-11-24 03:31:15
计算机的核心是CPU,它承担了计算机的所有计算任务,CPU就像一个工厂,时刻在运行着,而操作系统管理着计算机,负责任务的调度、资源的分配和管理。 进程和线程都是计算机操作系统中的基本概念,在进程和线程之上有程序,应用程序是具有某种功能的程序,运行在操作系统中。 例如,我们的桌面上都会安装QQ、酷狗音乐、微信......等,这些就是程序。当我们点击QQ运行时,QQ正常运行,此时就会开启一个进程。 因此, 「程序是静态的,而进程是动态的,程序是作为进程的运行的载体,进程会随时间,会在某一时刻消亡。」 图片来源于网络 我们运行程序开启的进程,我们可以在任务管理器中可以查看,当我们再次点击QQ,登陆另一个账号的时候又会开启一个进程。 打个比喻:前面我们把CPU比作一个工厂,那么程序就好像工厂里面的车间。 图片来源于网络 但是,车间是静态的,车间中有多条流水线,进程就好比流水线,流水线是动态执行的,一个车间可以同时运行多条流水线,也可以只执行一条流水线或者一条流水线都不执行。 总结来说: 「程序可以包含多个进程,多个进程并发执行,相互独立,因此,进程也是系统进行资源分配和调度基本单位。」 当然,程序也可以没有启动进程,就好比车间中没有流水线,因为程序是静态的,而进程的有无就好比层间的流水线是否存在。 图片来源于网络 一条流水线上可以有很多工人,那些工人就好比是线程,一个员工就代表一个线程

这一次,彻底弄懂 JavaScript 执行机制

青春壹個敷衍的年華 提交于 2020-11-24 03:30:43
△ 是 新朋友 吗?记得先点 web前端学习圈 关注我哦~ 本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我。 不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论: javascript是按照语句出现的顺序执行的 看到这里读者要打人了:我难道不知道js是一行一行执行的?还用你说?稍安勿躁,正因为js是一行一行执行的,所以我们以为js都是这样的: let a = '1'; console.log(a); let b = '2'; console.log(b); 然而实际上js是这样的: setTimeout(function(){ console.log('定时器开始啦') }); new Promise(function(resolve){ console.log('马上执行for循环啦'); for(var i = 0; i < 10000; i++){ i == 99 && resolve(); } }).then(function(){ console.log('执行then函数啦') }); console.log('代码执行结束'); 依照 js是按照语句出现的顺序执行

LeetCode 图解 | 540. 有序数组中的单一元素

余生颓废 提交于 2020-11-24 03:27:41
点击关注上方“ 图解面试算法 ”, 设为“置顶或星标”,一起刷 LeetCode。 作者:chilimyan 题目来源于 LeetCode 上第 540 号问题:有序数组中的单一元素。题目难度为中等,目前通过率60.2%。 题目描述 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2 示例 2: 输入: [3,3,7,7,10,11,11] 输出: 10 注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行。 题目解析 我们先读题,找出题中关键词“包含整数的有序数组”、‘’元素出现两次“、”只有一个数出现一次“,这里我们可以知道:只出现一次的那个元素所在的有序数组元素个数必为奇数。 这个是解题的关键。 因为题目要求我们的时间复杂度为O(log n),因此我们可以用二分搜索法。 解法一:二分搜索 首先将 lo 和 hi 分别指向数组首尾元素,mid 指向中间元素,这时我们会发现中间元素与其左右两边元素分别有以下三种情况,如: (1)3、3、4 (2)3、4、3 (3)4、3、3 对于第二种情况,我们立马就找到了只出现一次的那个元素。 那么对于第一种情况 mid = mid - 1,那么以(3、3)为界将数组一分为二,判断两边的元素个数