strip

刷了无数大厂Android研发岗面试题,其实考的无非是这 3 点能力

跟風遠走 提交于 2021-01-12 20:01:02
前言 发现一个有趣的现象,似乎程序员们对面试题总是抱有热情,多看几道面试题,自己的面试能力就可以提高一点。 作为一个研发工程师,看过很多公司的面试题,也参与过很多公司的面试,发现大厂的面试题更加具有代表性,虽然现在很多大厂的面试官也懒得自己出题了,不过经验老到的他们还是更清楚如何高效率地考察面试者。 而小公司的面试题往往五花八门,有的更加贴近公司自身业务,希望面试者结合业务给出解决方案,有的干脆直接从书本上找题目,考察一些死记硬背的概念,当然,有的初创公司逼格很高,则会搞一些高难度的面试题,角度刁钻,常常让面试者猝不及防。 既然大公司的面试题具有共性,那么我们也不妨来尝试探讨一下,大厂面试题到底考察面试者哪些方面的能力。 一、基础知识 基础知识无疑是大厂面试官最喜欢考察的东西了。如果面试者的基础都不扎实,那么建立于基础知识之上的实战能力、业务能力都是空中楼阁。 说到基础知识,首当其冲的就是岗位要求的能力了,对于Android工程师来说,你需要熟悉的知识点有:Java基础、Android相关的知识点。 其中Android相关知识点又包含:Activity、BroadcastReceiver、ContentProvider、Service、Handler、AsyncTask、Fragment、ListView等等.......在这里就不一一阐述了。 作为一个程序员

Python异常处理

孤人 提交于 2021-01-10 15:13:35
异常处理格式: try: 执行业务语句 raise 自定义异常类型() except 自定义异常类型: 处理异常语句 except (异常类型1,异常类型2,……): #多个异常类型分别用逗号隔开 处理异常语句 except Exception: #万能匹配,未知错误类型! 处理异常语句 else: 没有异常才会执行语句 finally: 不管有没异常都会执行语句 简要说明: 1.raise 语句可以自定义报错信息,如上。 2. raise后的语句是不会被执行了,因为已经抛出异常,控制流将会跳到异常捕捉模块。 3. except 语句可以一个except后带多个异常,也可以用多个语句捕捉多个异常,分别做不同处理,如果不清楚具体异常类型,最后可用Exception做万能匹配。 4. except语句捕捉的异常如果没有发生,那么except里的语句块是不被执行的。而是执行else里的语句 5. 在上面语句中try/except/else/finally所出现的顺序必须是try–>except X–>except–>else–>finally,即所有的except必须在else和finally之前,else(如果有的话)必须在finally之前,而except X必须在except之前。否则会出现语法错误。 6.else和finally都是可选的. 7.在上面的完整语句中

Python数据类型Day02

孤街醉人 提交于 2021-01-10 14:40:49
基本数据类型 什么是数据类型 : 变量 是用来存储值的所在处,它们有名字和数据类型。 变量 的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明 变量 时也可指定它的数据类型。所有 变量 都具有数据类型,以决定能够存储哪种数据 Python提供的基本数据类型主要有:布尔类型、整型、浮点型、字符串、列表、元组、集合、字典等等。 整形&浮点型 整形也就是整数类型(int),存放年龄,工资,成绩等,有正整数,负整数和零,浮点型也就是小数类型(folat),带小数点的 a = 10 b = -20 c = 0.05 布尔类型 布尔类型就是真和假,只有这两种,True和Fasle,非真即假,除了True和False还有0和1,非0即真 a = True b = False 字符串操作 1 name = ' my name baylor ' 2 name = ' my name \tis {name} and I am {year} old ' 3 print (name.capitalize()) # 首字母大写 4 print (name.count( ' i ' )) # 计算 i 出现几次 5 print (name.center(50, ' - ' )) # 一共打印50个字符,不够用 - 补齐 name放中间 6 print (name.endswith( "

CSS四种定位方式的详解

Deadly 提交于 2021-01-09 17:01:23
CSS布局的四种定位方式 1、static(静态定位):   默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。参考上篇随笔。 2、relative(相对定位):   定位为relative的元素脱离正常的文档流,但其在文档流中的位置依然存在,只是视觉上相对原来的位置有移动。   通过top,bottom,left,right的设置相对于其正常(原先本身)位置进行定位。可通过z-index进行层次分级 。 .static1{ height:80px; background-color: red; } .relative{ height:80px; position:relative; top:40px; left:40px; background-color: black; } .static2{ height:80px; background-color: blue; } </style> </head> <body> <div class="static1"></div> <div class="relative"></div> <div class="static2"></div> </body>   他是默认参照父级的原始点为原始点(父级不是必须设定position属性),无论父级存在不存在

正则表达式 实现计算器

♀尐吖头ヾ 提交于 2021-01-08 22:54:47
import re bracket = re.compile(r'\([^()]+\)') # 寻找最内层括号规则 mul = re.compile(r'(\d+\.?\d*\*-\d+\.?\d*)|(\d+\.?\d*\*\d+\.?\d*)') # 寻找乘法运算规则 div = re.compile(r'(\d+\.?\d*/-\d+\.?\d*)|(\d+\.?\d*/\d+\.?\d*)') # 寻找除法运算规则 add = re.compile(r'(-?\d+\.?\d*\+-\d+\.?\d*)|(-?\d+\.?\d*\+\d+\.?\d*)') # 寻找加法运算规则 sub = re.compile(r'(-?\d+\.?\d*--\d+\.?\d*)|(-?\d+\.?\d*-\d+\.?\d*)') # 寻找减法运算规则 c_f = re.compile(r'\(?\+?-?\d+\)?') # 检查括号内是否运算完毕规则 strip = re.compile(r'[^(].*[^)]') # 脱括号规则 def Mul(s): """计算表达式中的乘法运算""" exp = re.split(r'\*', mul.search(s).group()) return s.replace(mul.search(s).group(), str(float(exp

正则表达式计算器

点点圈 提交于 2021-01-08 22:54:30
'' 计算流程: 1.将括号表达式(内部不包含括号)匹配出来 2.计算括号表达式的值,用计算值替换原括号表达式 计算处理流程: 1)从左至右匹配,匹配出乘法或除法表达式,计算出值,塞回去替换匹配的内容 2)乘除法运算都已处理完,对剩下表达式从左至右匹配 3)匹配一个加法或减法运算式,计算出值,塞回去,替换匹配的表达式 4)直到没有匹配运算式,停止,本轮括号表达式计算替换值流程完成 3.再次进行括号表达式(内部不包含括号)匹配 4.重复2 5.直到匹配不出括号表达式,直接对剩余运算式进行乘除加减处理 ''' import re p1 = re.compile(r'\+\s*?-|-\s*?\+') # 匹配'+-或-+' 匹配-+是为了处理用户输入原始表达式中有-+的情况 p2 = re.compile(r'-\s*?-') # 匹配'--' def process_multi_divis(s): pattern = re.compile(r'-?\d+(?:\.?\d+)?\s*?[*/]{1}\s*?-?\s*?\d+(?:\.?\d+)?') # 匹配 *,/,*-,/- 四种情况 while 1: result_process_p1 = re.sub(p1, '-', s) s = re.sub(p2, '+', result_process_p1) r = re

作业:利用正则表达式知识, 编辑一个简单的表达式计算器

烈酒焚心 提交于 2021-01-08 20:46:15
开发要求:   开发一个简单的python计算器:   实现加减乘除及优先级解析;   用户输入类似这样的表达式: 1 - 2*((60-30 +(-40/5)*(9-2*5/3+7/3*99/4*2998 + 10*568/14))-(-4*3)/(16-3*2))   等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似的功能实现,运算后得出结果)      计算结果必须与真实的计算器得出结果一致; 1.  功能分析:     用户输入一个类似这样 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 这样的表达式,     假设表达式里面除了包含空格、'+'、'-'、'*'、'/'和括号再无其他特殊符号,     然后自己动手写代码解析其中的表达式,实现加减乘除,     最后得出的结果与真实的计算机所算的结果必须一致。 2.   所需要的知识点:     1>  字符串的处理;     2>  正则表达式的运用;     3>  函数递归; 3.   程序实现流程分析:     1>  用正则表达式处理字符串,只提取其中的数字和运算符,并转换成列表     2>  编写一个函数,处理没有括号的基本运算的基本表达式     3>  再写一个函数递归处理带有括号的函数

用最复杂的方式学会数组(Python实现动态数组)

╄→尐↘猪︶ㄣ 提交于 2021-01-08 17:02:42
# Python序列类型的本质 在本博客中,我们来聊聊探讨Python的各种“序列”类,内置的三大常用数据结构——列表类(list)、元组类(tuple)和字符串类(str)的本质。 不知道你发现没有,这些类都有一个很明显的共性,都可以用来保存多个数据元素,最主要的功能是:每个类都支持下标(索引)访问该序列的元素,比如使用语法 `Seq[i]`。其实上面每个类都是使用 `数组` 这种简单的数据结构表示。 >本期小编推送2021初学者一定会用到的Python资料,含有小编自己呕心沥血整理的免费书籍/视频/在线文档和编辑器/源代码,关于`Python`的安装qun:850973621 但是熟悉Python的读者可能知道这3种数据结构又有一些不同:比如元组和字符串是不能修改的,列表可以修改。 ## 计算机内存中的数组结构 计算机体系结构中,我们知道计算机主存由位信息组成,这些位通常被归类成更大的单元,这些单元则取决于精准的系统架构。一个典型的单元就是一个字节,相当于8位。 计算机系统拥有庞大数量的存储字节,那么如何才能找到我们的信息存在哪个字节呢?答案就是大家平时熟知的 `存储地址` 。基于存储地址,主存中的任何字节都能被有效的访问。实际上,每个存储字节都和一个作为其地址的唯一二进制数字相关联。如下图中,每个字节均被指定了存储地址: ![image.png](https://upload

CSS的浮动属性

北城以北 提交于 2021-01-08 16:04:57
CSS浮动和清除浮动 1.浮动float   div配合float浮动来做页面的布局,浮动最常用的地方就是用来做布局。只有一个标签设置了浮动float属性,就会变成块级标签。 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>10float页面布局示例</title> <style> * { margin: 0px; padding: 0px; } .c1 { height: 1000px; width: 20%; background-color: darkslategrey; float: left; /* 使用浮动属性,将div1和div2两个块级标签横向推挤在一起。如果两个标签能够摆在一排,就会浮动到一起 */ } .c2 { height: 1000px; width: 80%; background-color: black; float: left; } </style> </head> <body> <!-- 设置一个div占用屏幕左侧的百分20,一个div占屏幕右侧的百分之80 --> <div class="c1"></div> <div class="c2"></div> </body> </html> 2.清除浮动clear属性 (1

如何编写安全的PHP代码

孤街醉人 提交于 2021-01-08 08:10:56
绝不要信任外部数据或输入 关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。 例如,下面的数据元素可以被认为是安全的,因为它们是在 PHP 中设置的。 <?php $myUsername = 'tmyer'; $arrayUsers = array('tmyer', 'tom', 'tommy'); define("GREETING", 'hello there' . $myUsername); ?> 但是,下面的数据元素都是有瑕疵的。 <?php $myUsername = $_POST['username']; //tainted! $arrayUsers = array($myUsername, 'tom', 'tommy'); //tainted! define("GREETING", 'hello there' . $myUsername); //tainted! ?> 为什么第一个变量 $myUsername 是有瑕疵的?因为它直接来自表单 POST。用户可以在这个输入域中输入任何字符串