中科院大数据部Python开发面试题

1. 写出如下代码的输出结果:
a = 1
def fun(a):
    a=2
fun(a)
print(a)  # 输出____

a = []
def fun(a):
    a.append(1)
fun(a)
fun(a)
print(a)  # 输出____

def fun(a=[]):
    a.append(1)
    print(a)
fun()
fun()  # 输出____

输出:

  1. 1
  2. [1,1]
  3. [1] [1,1]
2. Python中如何声明静态方法和类方法?
class Lei(object):
    # 静态方法
    @staticemethod
    def statice_def():
        pass
        
    # 类方法
    @classmethod
    def class_def(cls): 
        pass
3. 阅读如下代码,写出输出结果:
class A(object):
    def a(self):
        print("A.a()")
class B(object):
    def a(self):
        print("B.a()")
class C(A, B):
    def a(self):
        super().a()
        print("C.a()")
class D(C,B):
    pass

c1=C()
c1.a()  # 输出____
d1=D()
d1.a()  # 输出____ 

输出:

  1. A.a() C.a()
  2. A.a() C.a()
4. 使用生成器实现输出斐波那契数列(F0=0, F1=1, Fn=Fn-1+Fn-2(n>=2, n∈N*))
# 方式一:
def gibonacci(n):
    forward = 0
    backward = 1
    con = 1
    while con <= n:
        if con == 1:
            yield forward
        elif con == 2:
            yield backward
        else:
            yield forward + backward
            forward, backward = backward, forward + backward
        con += 1
g_iter = gibonacci(10)
print(list(g_iter))
# 方式二:
def gibonacci(n):
    a, b, count = 0, 1, 0
    while True:
        if count > n-1:
            return 
        yield a
        a, b = b, a+b
        count += 1     
print(list(gibonacci(2)))
5. 实现如下两个装饰器,使得函数say()能返回“<b><i>Hello</i></b>”:
@makestyle1
@makestyle2
def say():
    return 'Hello'

答:

# 装饰器1   
def makestyle1(func):
    def inner():
        return "<b>" + func() + "</b>"
    return inner
# 装饰器2
def makestyle2(func):
    def inner():
        return "<i>" + func() + "</i>"
    return inner
6. Django
6.1 python manage.py makemirationspython manage.py magrate命令的作用:

答:生成数据库迁移文件和 执行数据库迁移文件

6.2 开发项目时启动命令:

答:python manage.py runserver [IP:Port]
([]中的内容若省略,默认127.0.0.1:8000)

6.3 django-admin makemessages -l zh_CN命令的作用:

答:项目的 国际化与 本地化。

7. Django
class Animal(models.Model):
    name = models.CharField(max_length=50, blank=True, null=True)
    age = models.PositiveIntegerField()
7.1 补全如下代码,使得ORM系统不创建实际的Animal数据表;
class Meta:
	# ________

答:abstract = True

7.2 name字段中null=Trueblank=True的区别:

答:

  • null是数据库范畴的概念,表示字段允许为空;
  • blank是表单范畴的概念,表示字段允许空白;
8. 写出如下要求的ORM语句:
class User(models.Model):
    name = models.CharField(max_length=50, blank=True, null=True)
    age = models.PositiveIntegerField()
    status = models.IntegerField(choices=((0,"儿童"), (1,"少年"), (2,"青年"), (3,"中年"), (4,"老年")))
8.1 查询age大于等于10的所有User记录:
User.objects.filter(age__gte=10)
8.2 查询name字段包含“abc”的所有user记录:
User.objects.filter(name__contains='abc')
8.3 查询status为“儿童”或“老年”的user记录:
User.objects.filter(Q(status=0) | Q(status=4))
8.4 将age小于10的所有记录的status字段设置为儿童:
User.objects.filter(age__lt=10).updtate(status=0)
9. 给定1个5升的被子和1个3升的被子,如何取出1升水?

答:将3升的杯子装满,向5升的杯子倒,反复2次,当5升的杯子满了,3升的杯子还剩1升水。

10. 实现二分查找:
# 方式一:非递归
def binary_search(my_list, item):
	start = 0
	end = len(my_list)-1
	while start < end:
		mid = (start+end)/2
		if item == my_list[mid]:
			return True
		elif item < mylist[mid]:
			end = mid - 1
		else:
			start = mid + 1
	return False
# 方式二:递归
def binary_search(my_list, item):
	n = len(my_list)
	if n==0:
		return False
	mid = n / 2
	if item == my_list[mid]:
		return True
	elif item < my_list[mid]:
		binary_search(my_list[:mid], item)
	else:
		binary_search(my_list[mid+1:], item)
11. 给出如下HTML代码,请用CSS代码隐藏掉“Meta Store”所在的div
<ul>
	<li>
		<a href="#/main/services/HDFS/summary">
			<div class="icon-health-block">NameNode</div>
		</a>
	</li>
	 <li>
		 <a href="#/main/services/HDFS/summary">
   			<div class="icon-health-block">Meta Stotre</div>
 		</a>
	</li>
	<li>
		<a href="#/main/services/HDFS/summary">
			<div class="icon-health-block">Region Server</div>
		</a>
	</li>
</ul>

答:CSS选择器分为:标签选择器、ID选择器、类选择器、层级选择器、组选择器、伪类选择器
选择好后,新增css属性如下,具体怎么选择不会。

{
    display:none
}
12. JS如何获取当前访问页面的url?
var urls = window.location.href;
13. v-if和v-show的异同点:
  • 相同点:用法虽然基本一致,都是通过条件指令可以控制元素的创建(显示)或者销毁(隐藏)。
  • 不同点:v-show不支持v-else,而且不论元素显示还是隐藏,元素都是一直存在的。v-show只编译一次,后面其实就是控制css,而v-if不停的销毁和创建,故v-show性能更好。
14. 处理事件监听可以使用哪个指令?

v-on:事件='函数名'@:事件='函数名'

15. 写出如下Liunx系统命令
15.1 查看当前所在目录
pwd
15.2 列出当前路径下的所有文件及路径的详细信息
ls -al
15.3 删除当前路径下的“a.txt”文件
rm a.txt
15.4 创建文件目录“a/b/c”
mkdir -p a/b/c
15.5 创建一个指向当前路径下文件“file1”的软连接“Ink1”:
ln -s file1 lnk1

总体来说面试题很简单

但是,面试官的所有问题都是围绕项目展开的,但是自己根本就没有准备项目的介绍,所以被问得无地自容,不得不把后边的面试都推了,重新准备。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼义II虎神

打赏5C币,作者可获得4C币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值