新鲜出炉面试题(二)

简介: 今天是华为的初试,明天还有复试。快来看一下今天的题目吧。

关于项目以及灵活的题目此处并未体现,只将一些记忆深刻的通用题目汇总展示,希望可以帮助到大家。

1.Python

1.1 字符串的 find 和 index 方法有什么区别

答:find 方法会检测某一字符串片段是否在指定字符串中,如果在内,会返回开始的索引值,不存在则返回 -1;index 方法与 find 作用相同,只不过在不存在的情况下会抛出异常。

1.2 元祖不使用下标的情况下如何取值

答:可以采用如下类似字典的取值方法:

mytuple = (('a',1),('b',2))
value = dict(mytuple).get('a')
print(value)
# 1

这道题当时并未做出,无具体答案更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

1.3 列表推导式

问:已知列表 ['a', 'b', 'c'],需要得到列表 ['aa', 'bb', 'cc']。采用列表推导式的方式如何实现?

答:代码如下:

alist = ['a', 'b', 'c']
newlist = [x+x for x in alist]
print(newlist)
# ['aa', 'bb', 'cc']

1.4 三目运算符

问:C 语言中的如下代码:


表达式1 ? 表达式2 : 表达式3;

python 中如何实现?更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

答:代码如下:


表达式1 if 表达式2 else 表达式3

1.5 不定长参数如何定义与取值

答:下面定义一个函数,使用不定长参数并在函数内部获取参数:

def func(name, age, *args, **kwargs):
    print(name)
    print(age)
    print("args is {}".format(args))
    print("kwargs is")
    for k, v in kwargs.items():
        print("'{}': {}".format(k, v))
func('Ethan', 18, 2, 3, 4, m=1, n=2)
"""
Ethan
18
args is (2, 3, 4)
kwargs is
'm': 1
'n': 2
"""

1.6 多进程

问:如何开启一个进程?

答:在 python 中可以使用模块 multiprocessingProcess 方法开启多进程。具体代码如下:

import multiprocessing
import time
def run_proc():
    """子进程要执行的代码"""
    while True:
        print("----2----")
        time.sleep(1)
if __name__=='__main__':
    # 创建子进程
    sub_process = multiprocessing.Process(target=run_proc)
    # 启动子进程
    sub_process.start()
    while True:
        print("----1----")
        time.sleep(1)

执行结果如下:

----1----
----2----
----2----
----1----
----2----
----1----
----2----
----1----

2.Django

2.1 Django 如何执行原生 sql 语句

答:可以使用游标的方式,也可以使用 raw 方法或者 extra 方法。

游标以及 raw 为官方文档提示的用法,另外一种来源于网络。

2.1.1 游标

from django.db import connection,connections
# cursor = connection.cursor()
# cursor = connections['数据库的名字,setting设置的'].cursor()
with connection.cursor() as cursor:
    cursor.execute("要执行的sql语句")
    row = cursor.fetchall()  # fetchone,dictfetchall(cursor)
    print(row)
    # ((xxx,xxx),(xxx,xxx)...)

2.1.2 raw


obj = 模型类.objects.raw("原生sql")

2.1.3 extra


模型类.objects.extra(可选择执行select后条件还是直接执行where后条件)
Entry.objects.extra(select={'new_id': "select col from sometable where othercol > %s"}, select_params=(1,))
Entry.objects.extra(where=["foo='a' OR bar = 'a'", "baz = 'a'"])
Entry.objects.extra(select={'new_id': "select id from tb where id > %s"}, select_params=(1,), order_by=['-nid'])

2.2 如果需要给数据库插入1000条数据,如何操作

我回答使用循环,面试官轻蔑一笑我只能投降。

答:可以使用模块 pymysql 中游标的一个方法 executemany

execute(sql)
    - 可接受一条语句从而执行
executemany(templet,args)
    - 能同时执行多条语句,执行同样多的sql语句比execute()快得多,强烈建议执行多条语句时使用executemany
    - templet:sql模板字符串
        - 例如: ‘insert into table(id,name) values(%s,%s)’
    - args:模板字符串中的参数,是一个列表,列表中的每一个元素必须是元组!!!
        - 例如:[(1,'小明'),(2,'小红'),(3,'琦琦'),(4,'韩梅梅')]

2.3 Django 一个请求的执行过程

答:当请求访问后端服务器时,会先根据 url 在项目总的 urls.py 文件中进行匹配,然后截取剩余路径到单个应用的 urls.py 文件中进行匹配(如果匹配不到直接返回404)。路由到具体视图后,可以与模型类进行交互,也可以与模板进行交互填充等。在完成具体的业务逻辑后,视图将填充好的页面返回给客户端进行渲染展示。

可以结合 MVT 进行说明,也可以具体到代码细节进行阐释。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

2.4 Django 获取参数的两种方法

问:现在有两种方式向服务器传递参数,一种是路径方式传递,一种是表单类型传递。请说明一下在视图中如何取到这些参数,假设参数为 ab

答:如果是路径方式传递的参数,可以使用如下方式获取:

url(r'^example/(?P<a>[a-z]+)/(?P<b>\d{4})/$', views.example),
def example(request, a, b):
    print('a=%s' % a)
    print('b=%s' % b)
    return HttpResponse('OK')

如果是表单类型传递,则利用下面的代码:

def get_body(request):
    a = request.POST.get('a')
    b = request.POST.get('b')
    print(a)
    print(b)
    return HttpResponse('OK')
相关文章
|
缓存 NoSQL 应用服务中间件
万字攻略,社招腾讯天美C++后台面经,面试题整理(上)
万字攻略,社招腾讯天美C++后台面经,面试题整理
|
7月前
|
NoSQL 算法 Java
百度二面,有点小激动!附面试题
前几天刚面完百度,这不,没两天就收到二面邀请了,还有点小激动呢!来看看这次都问了哪些面试题吧,附答案仅供参考。 ## ConsurrentHashMap如何计算下标? ConsurrentHashMap 计算下标和 HashMap 类似,它的主要执行流程有以下两步: 1. **计算 key 哈希值**: 1. **JDK 1.7**:key.hashCode()。 2. **JDK 1.8+**:((h=key.hashCode()) ^ (h>>>16)) -> 算法更均匀,哈希冲突越少。 2. **计算下标**:hash & (table.length-1)。 ## 说说M
63 2
百度二面,有点小激动!附面试题
|
8月前
|
前端开发 JavaScript
Web前端开发之面试题全解析 一,2024年最新面经牛客
Web前端开发之面试题全解析 一,2024年最新面经牛客
|
存储 Kubernetes 并行计算
万字攻略,社招腾讯天美C++后台面经,面试题整理(下)
万字攻略,社招腾讯天美C++后台面经,面试题整理
|
消息中间件 NoSQL Java
2023年秋招,金九银十Java后端最全面试攻略,吃透25个技术栈
前言 我分享的这份春招,金三银四Java后端开发面试总结包含了JavaOOP、Java集合容器、Java异常、并发编程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL数据库、消息中间件MQ、Dubbo、Linux、ZooKeeper、 分布式&数据结构与算法等25个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份PDF拿下众多大厂的offer,今天在这里总结分享给到大家!
|
NoSQL 数据库 Redis
新鲜出炉面试题(三)
新鲜出炉面试题(三)
|
前端开发 数据库
新鲜出炉面试题(一)
春天到了,那颗躁动不安的心又踏上了面试之旅,菜鸟在前方探路,返回一手资料供你参考。
|
Java 程序员 应用服务中间件
2023秋招,Java岗最全面试攻略,面试必刷,跳槽大厂神器!
现在 Java 面试可以说是老生常谈的一个问题了,确实也是这么回事。面试题、面试宝典、面试手册......各种 Java 面试题一搜一大把,根本看不完,也看不过来,而且每份面试资料也都觉得 Nice,然后就开启了收藏之路。 Java 开发者应该是不会很容易满足的,现在拿着 20K 的工作,下一步就想着拿 50K 的 offer,甚至年薪百万都是程序员很常见的,不满足于现状,身在其位就要有担当其位的能力,不断提升技能、技术栈,都是必不可少的! 其实很多人,对本身没有一个清楚的规划,甚至不知道适合什么路线,这样的话,你就会离心仪的 offer 越来越远!无论何时,都需要对自身有一个清楚的认知,
|
JSON 小程序 JavaScript
一个大四学长分享自己的web前端学习路线--小程序篇(3/3)
小程序文件类型分别有:样式(WSCC)、骨架(WXML)、业务(js)、配置(json)。但是注意的是:其实小程序开发虽然和web开发方式差不多,但是底层的原理根本不一样。
一个大四学长分享自己的web前端学习路线--小程序篇(3/3)
|
算法 前端开发 搜索推荐
一个比肩leetcode的面试刷题网站
最近收集了不少好玩接地气的工具,分享给大家。 说到面试刷题,我应该是比较有经验的,去年初本人正好换工作,也为面试做了很多准备,其中一个环节就是要复习大量的面试题,但是题目太分散,搜索引擎都要用烂了,后来那个月小度的股价涨了不少。
279 0
一个比肩leetcode的面试刷题网站

热门文章

最新文章