招银网络科技电话面经
自我介绍
****************************************Python**************************************************************列表的反转
[::-1]
自带函数 reverse()
列表拼接成字典函数
dict(zip(,))
浅谈lambda
写一些执行脚本剩下定义函数过程+简化代码可读性,无需跳到开头def定义部分
内置函数用过吗?
filter map list(map(lambda x: x%2, range(10)))
pass 语句
Python pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
在python中有时候能看到定义一个def函数,函数内容部分填写为pass。
这里的pass主要作用就是占据位置,让代码整体完整。如果定义一个函数里面为空,
那么就会报错,当你还没想清楚函数内部内容,就可以用pass来进行填坑。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 输出 Python 的每个字母
for letter in 'Python':
if letter == 'h':
pass
print '这是 pass 块'
print '当前字母 :', letter
print "Good bye!"
当前字母 : P
当前字母 : y
当前字母 : t
这是 pass 块
当前字母 : h
当前字母 : o
当前字母 : n
Good bye!
字符串相连
+
自带函数 join(sub),字符串作为分隔符,插入到sub中所有的字符之间
python寻找
find
find 与 findall 的区别
find 检测sub是否包含在字符串中,若有则返回索引值,否则返回-1
findall re模块的基于正则表达式,返回string中所有与pattern相匹配的全部字串,返回形式为数组
深复制浅复制
直接复制,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变
copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变
深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变
python 打开文件
统计代码行数举例
列表去重
放入set list(set(l))
新建空列表,遍历原来的列表 利用not in 去重
********************************************Java*************************************************************
接口与抽象类的区别
抽象类针对对象,接口针对行为
区别一: 抽象类中可以存在非抽象的方法 VS 接口中的方法被默认的变成抽象方法,只要是定义了接口,接口中的方法 就全部变成了抽象类即使你不写 abstract 它也是抽象的方法
区别二: 实现抽象类的方法时, 如果方法是抽象的,子类必须重写抽象的方法. 如果方法不是抽象的, 子类可以选择继承 VS 实现了接口 就必须实现接口中的所有方法, 因为接口中的方法默认的全部都是抽象的方法 --------------所以这里可以说, 接口是抽象类的一种, 也可以说接口是抽象类的延伸
区别三: 抽象类可以有私有的成员变量和成员方法 VS 接口中的方法全都被默认的修饰为: public abstract 类型的方法
区别四: 一个类只能继承一个抽象类 VS 一个类可以实现多个接口 ,接口可以实现多继承 举例:interface display extends aa ,bb,cc ...等等 然后让类去实现 display的接口 就可以实现 display aa bb cc接口
区别五: 抽象类中的非抽象的方法可以选择继承 VS 接口中的方法必须全部被重写 ,并且全部是公有的public 方法.
final
final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展,那么就设计为final类。 final方法不能被子类的方法覆盖,但可以被继承。
final方法 如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。 使用final方法的原因有二: 第一、把方法锁定,防止任何继承类修改它的意义和实现。 第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
final变量(常量) 用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。 另外,final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。
final参数 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。 注:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。 final不能用于修饰构造方法。
重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。
重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
GC 回收
如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。
GC守护线程(一个JVM实例一个进程一个GC线程),它负责特定时间(运行期间某时刻触发,触发之后会根据相应的触发条件选择相应的算法清除对应空间里面的对象)对JVM内存区中的堆(包括方法区(非堆))的对象进行回收释放,是JVM对Java内存对象的一套管理机制,Java程序员不需要关心内存的分配以及回收的问题,这一切都由JVM来管理,而内存的回收则是由GC来完成
如何缩小GC回收占用
减少静态变量
测试与开发
职业规划
#面经##Python##测试工程师##招银网络##秋招#