某银行的电话面试-----数据研发岗

面试官很客气,本来是他打电话过来,因为手机没电后来再给面试官打过去的电话。面试开始先简单的介绍了一下自己,然后面试官围绕着编程语言和数据库进行提问,问的都是一些比较基础的问题。

1.python的数据类型和区别
在python3中有6个标准数据类型:numbers,string,list,tuple,set,dictionary。
不可变数据类型(3个):numbers,string,tuple
可变数据类型(3个):list,dictionary,set
list里面的元素是可以改变的,tuple的元素不可改变,但是它可以包含可变的对象,比如list列表。列表是有序的对象集合,字典是无序的对象集合。字典中的元素通过键来存取,而不是通过偏移来存取,而且key必须用不可变类型,在同一个字典中,key必须是唯一的。

2.python迭代器、生成器和装饰器
(a)迭代器从集合的第一个元素开始访问,直到所有的元素被访问完,优点在于无须准备好迭代过程中的所有元素,迭代器在迭代到某个元素的时候才计算该元素,通过next()方法不断获取下一个内容,而且元素不能被随机访问,不能回退,在这之前元素可以不存在或者被销毁,这样就可以遍历一些数据量比较大的集合。
(b)生成器指的一个函数调用时返回一个迭代器,这个函数就叫做生成器(generator),函数中的yield会使函数变成生成器,生成器遇到一个yield的时候,会暂停运行生成器,返回yield后面的值,需要再次调用生成器才会从暂停的地方继续执行,直到遇到下一个yield。
(c)装饰器是一种增加函数或者类功能的简单方法,可以快速的给不同的函数或者类插入相同的功能,本质上来说是一种代码的实现方式,装饰器的表示语法是通过@方法(),或者@类。

3.python2和python3的区别
输入函数:python2是input_raw(),python3是input()
编码格式:python2是ASCII编码,python3是utf-8编码
字符串:python2的Unicode类型表示字符串序列,str表示字节序列;python3的str类型表示字符串序列,byte类型表示字节序列。
Ttrue和False:python2这两个为全局变量,可以给其赋值和进行别的操作,初始值分别为1和0;python3则不可变
迭代器:python2中返回列表的方法,比如range方法,必须实现next()方法;python不用去可以实现next()方法
nonlocal:python2里面无法再嵌套的函数中将变量声明为一个非全局变量,只有在函数中声明全局变量;python3里面则实现了这个功能。

4.python如何管理内存的
python的内存管理机制包括:引用计数、垃圾收集和内存池三个方面。
(a)引用计数指的是python程序中每使用一个一个变量后台都有一个引用计数。若是对象不再需要的时候,这个对象的引用计数为0时,会被垃圾回收。
(b)垃圾回收指的是当内存中有不再使用的部分的时候,垃圾收集器就会把它们清理掉,会去检查哪些引用计数为0的状态,然后清理气内存空间。另外垃圾回收还有一个循环垃圾回收,来确保释放循环引用对象。
(c)内存池机制提供了对垃圾的收集机制但是不用的内存放到内存池而不是返还给操作系统内存池预先从内存中申请内存块,当创建小于256bits的对象的时候,从内存池申请内存空间,当创建大于256bits的对象从内存申请空间。当释放的时候,来自内存池的内存空间返回给内存池,这样做的目的是可以减少内存碎片,提升效率。

5.数据库事物的特性
原子性,一致性,隔离性和持久性

6.数据库的索引
数据库索引是用于提高数据库表的数据访问速度。数据库索引的特点如下:
(a)避免进行数据库全表的扫描,不需要查询所有的数据页
(b)聚集索引可以避免数据插入操作,集中于表的最后一个数据页面
(c)在某些情况下可以避免排序操作

7.数据库drop,delete,truncate的区别
drop删除内容和定义,并释放空间。
delete语句删除是每一次从表中删除一行,并且将该行的删除操作作为事务记录在日志中
truncate不能删除行数据,虽然是删除行数据,但是比delete彻底,它只删除表数据。
执行速度一般为:drop>truncate>delete
drop和truncate是数据库定义语言,操作立即生效,不能回滚,操作不触发trigger

8.数据库如何进行优化
数据库优化可以从以下几个方面考虑:
(a)调整数据结构
(b)调整应用程序结构设计
(c)调整SQL语句
(d)调整服务器内存分配
(e)调整硬盘I/O
(f)调整操作系统参数

你可能感兴趣的:(某银行的电话面试-----数据研发岗)