导航:首页 > 编程语言 > python面试题汇总50问

python面试题汇总50问

发布时间:2022-08-29 23:37:44

python后端工程师面试题目有哪些

1. 我从来不问google可获得的答案的问题, 只是问问面试者“在过去的工作中,遇到的Ta认为最有成就感的一件事情是什么”和“如果出现了一个google不到的问题,你会怎么解决”这样的问题。

2. 我从来不问操作系统等和Python无关的话题,首先是我不怎么问和工作太无关的话题,有些东西用不到很多就被会遗忘,挑起来这种问题其实挺无聊;其次我是非计算机专业毕业,问的东西说不定我自己都没有把握,那就不出来献丑了。我只关注面试者的学习能力和解决问题的方式,说白了,是不是就是看他是不是“聪明的人”。

3. 不问面试者的短处。我在自己被面试的时候有过这种精力,面试者问他擅长的内容,我不一定搞的定,如果反过来面试Ta,我也会灭掉Ta。所以我会尽力寻找面试者的优势和优点,尤其是对方已经明确承认。其实很多经验和能力,只是需要一个机会和环境,所以我不想放过任何一个合适的人。

4. 面试者不会Python也没有关系。面试者的主动性和学习能力觉得更重要,如果他在其他领域能证明做的不错或者能让我感觉到这个一个未来有潜质成为优秀工程师的人,不会Python没有关系。 嗯目前看来,我没有看错过。

5. 我从来不问Python语法这种看书和google就能学会的问题,我只想了解Ta是否愿意去学。举个例子,我会让面试者“讲讲日常开发中都用到了那些Python内置的模块”,原因在我的专栏“Python之美 - 知乎专栏”的 Python不能不知的模块 - Python之美 - 知乎专栏中有写,基本上说完我就能评估出他的能力和风格,继而就是再问一些问题去验证我的评估是不是准确。

6. 最后,我一般都会和面试者细聊一个Ta认为在过去的工作或者自己开源的项目中最熟悉的一个,从项目设计、踩过的坑儿、开发周期以及如何安排、如何确定需求、如何和其他人协作等方面,最后评估下Ta是否能很容易的融入到我们现在的团队,大家是否可以接受Ta,对工作不负责的、没有用心工作的、没有团队意识的、沟通能力有缺陷的就放弃掉,对性格上容易发生冲突的、不适合团队合作的我就得考虑下,未来也会如实反馈给HR。

❷ Python面试数据分析,爬虫和深度学习一般都问什么问题,笔试题目有哪些

简单罗列些:
1.数据清洗与处理:数据读取read_csv等,数据表构建dataframe等,数据整合concat/join/merge等,表结构处理以及切片iloc/loc等,数据统计describe/isnull/sum/apply等,图表展示plot,数据透视表pivot_table等,异常值与缺失数据统计与处理,相关性检验
2.机器学习模型构建:svm,logistic,knn等
3.爬虫:request包
4.深度学习:CNN,RNN,图像处理,音频处理,语义理解。

❸ 快速深入一门语言的几个问题(Python面试题

1hello, world
目标:屏幕上打印出hello, world。
原因:不解释。
进阶:当命令行给与不同参数的时候,打印hello, 名字。给与开关的时候,打印hello, 123。
2.正则提取
目标:写一个正则表达式(或者类似的东西),从一段网页源码中找到某个标签的内容,去掉前后空格,显示。
原因:测试字符串处理能力。
进阶:支持正则扩展
3.扫描排重
目标:将某个目录和子目录下的所有文件扫描,排除重复的文件。
原因:测试文件系统操作能力。
进阶:多线程处理,注意吞吐颠簸

❹ python自动化测试面试题问答汇总

(1)根据需求文档,深挖需求文档中的细节进行用例设计
(2)根据自己的测试经验和一些常识补充用例
(3)参考同事曾写过的用例或网上的资料进行一些用例补充

测试序号、测试模块、测试环境、前置条件、操作步骤和数据、预期结果、实际结果、是否通过、备注

(1)等价类划分法:把所有可能输入的数据划分为若干个区域,然后从每个区域中取少数有代表性的数据进行测试即可。有效等价类、无效等价类
(2)边界值分析法:输入条件是一个取值范围,对取值范围的边界进行边界值测试;输入条件中规定输入数据是一个有序集合,对有序集合的边界进行边界值测试。
(3)错误推测法:根据经验的补充,如超长混合字符串,全角字符串、数字“0”及单引号
(4)正交表分析法:多个输入框组合的情况,可以借助正交设计助手小工具,有效减少用例设计个数
(5)因果判定法:

(1)测试用例是否依据需求文档进行编写
(2)测试用例中的执行步骤、输入数据是否清晰、简洁、正确;对于重复度高的执行步骤,是否进行了简化
(3)每个测试用例是否有明确的预期结果
(4)测试用例中是否有多余的用例
(5)测试用例中是否覆盖了需求文档的所有功能点,是否有遗漏

(1)要确保测试用例是针对需求文档编写的,确保测试点能覆盖所有的需求点
(2)保证操作步骤、具体数据、预期结果的清晰性、简洁性、明确性,以确保测试用例的可操作性和可复用性
(3)确保有足够多的异常测试用例,同时要确保没有多余的重复用例
(4)对测试用例进行评审

(1)大致体验一下软件,对于如边界值、输入数据类型不明确的问题集中反馈给产品经理,待产品经理给出相应的标准后再设计用例。
(2)对于测试 软件的过程中,发现有些模块功能不明确影响用户正常使用的地方,会及时反馈给测试经理,协助解决这类问题
(3)会积极参与项目的各种讨论会议;查看已有的测试用例、bug库中已有的bug、已有的用户手册和帮助文档,咨询产品人员并尽可能多的了解相关需求信息,并以此为基础设计测试用例
(4)参考软件功能,直接设计用例,然后提交给测试组(必要情况下可以提交给整个项目组)进行评审,得到统一意见。

(1)根据常识想象出ATM机的功能点:插卡、退卡、输入密码、修改密码、余额查询、取钱、存钱、转账等
(2)根据自己的操作经验,分别制定每个功能点的需求文档。

(1)根据经验判断,像页面显示,布局,兼容性问题都是前端的问题
(2)查后端服务日志,如果日志没有记录,很可能是接口没有调用成功,有可能是这个功能没有与后端进行交互,也就不存在后端的问题。如果有日志输出可以查一下日志信息,进一步分析
(3)如果是前端显示的数据有误,可以查接口,如果接口返回的实际没有问题,就是前端的问题,如果接口返回数据有问题,前端显示的与后端一致,就是后端的问题
(4)查看状态码,404可能是前端传参错误或后台接口改了,500是后端的问题

(1)bug概述
(2)bug具体描述
(3)bug的严重程度:致命问题、严重问题、一般问题、
(4)bug的处理优先级:立即处理、高优先级处理、排队处理、低优先级处理
(5)bug的指派人
(6)bug的状态
(7)附件截图或日志
(8)其他信息点

通常要对修复好的产品进行多轮测试,回归测试,因为即使之前的bug修复好了,在下一轮测试中还有可能发现新bug
(1)回归测试时执行全部用例
(2)选择重要功能点、常用功能点、与bug关联的功能点进行测试
(3)选择性执行关键功能点的测试用例
(4)仅测出现bug的功能点

(1)测试的版本号和测试环境要描述清楚
(2)bug概要:通过bug概要让项目组其他成员知道这个bug单描述的是什么问题
(3)bug具体描述:也就是bug的重现步骤,bug记录的细节越详细越好,包括出错前后执行的操作步骤,涉及的具体数据等
(4)附上相应的截图和日志,特别是截图能为bug提供有力的说明

把发现的这个bug操作步骤补充到测试用例中,以便下一次测试的时候能够注意到这个问题

(1)检查是否是因为bug描述不清楚,造成对bug的争议,确保bug单清晰明确,描述清楚,并且有截图或日志。
(2)如果bug单写清楚了。就要以心平气和的心态和开发人员进行沟通,说明bug对产品的不良影响
(3)如果沟通后还是不愿意修改的话,可以向测试经理反馈这一情况,由测试经理出面解决,或召开三方会议共同商讨定夺。
(4)作为测试人员,一定要坚定自己的立场原则,以产品为出发点,不能经开发的解释后就放弃自己的观点,认为自己找到的不是bug了。

首先我会截图并搜集日志,保留好测试现场,没有重现可能是因为没有触发到bug产生的点,我会想方设法让这个bug重现,如果实在无法重现,会提交bug、截图和日志给开发人员。如果开发人员要求重现,就后续继续观察,观察到了可以邀请开发来工位进行调试,确定问题;如果最终还是无法重现的话,就把问题反映给测试经理,由测试经理和开发人员进行评审和解决方法,虽然现在没有重现,但不能保证在用户那里不会出现。

首先我觉得凡事影响用户体验的问题都是大问题,如果用户体验不好,会造成大量潜在用户的流逝,对产品的后续发展是非常不利的;其次如果每个问题都因为修改成本高而不去修改的话,就无法提升产品的质量,我认为无论是什么问题,都应该要求开发人员去修改,这是对产品负责,也是对用户负责。

之前有用过tapd,也有听说过禅道、TestLink,测试管理工具,主要用于降低产品、开发、测试沟通成本,可以根据公司的具体情况进行使用,应该都差不多,能够很快上手

一个软件版本一般要测三到五轮,每一轮测试的时间不能确定,受需求规模、测试人员、测试技术、软件质量等多方面因素影响,要视具体的情况确定

(1)编写目的
(2)模块功能描述
(3)测试过程:测试时间、地点、人员、版本
(4)测试环境
(5)测试功能点的范围
(6)测试执行结果
(7)风险评估
(8)测试结论
(9)附件

(1)按照测试计划安排完成了所有测试工作
(2)测试用例全部完成,执行通过率达到标准
(3)每个测试人员手上的bug处于关闭状态
(4)回归测试全部执行完毕,没有发现影响产品上线的bug,软件产品达到了上线标准
(5)每个测试人员负责的测试报告已完成,并提交给了测试经理

需求评审,测试计划的制定、测试用例的设计、用例评审、测试环境搭建、测试执行(提交BUG、回归测试)、撰写测试报告

对于功能测试人员,是在系统测试时介入的

首先测试工作是产品诞生过程中必不可少的环节,对产品质量有明显的改善作用;其次测试能对开发工作起到一定的监督和推动作用,能够加快软件开发周期,加快软件发布的进程

首先熟悉项目组成员,包括开发、测试、产品。其次我会从熟悉需求文档开始,依次熟悉测试组的测试用例、bug管理工具以及bug库中已提交的bug。最后我会想测试组的老同事或我的导师请教测试组的基本工作流程等细节问题,并结合测试经理分配的任务,通过这些任务熟悉整个测试流程和工作要点。

受测试时间、测试人员数量、测试人员技术等方面的因素影响,无法发现所有bug。有些bug是需要在特殊环境下长期使用才会发现的。一般情况下,在交付用户后都不应该有影响用户使用和体验的bug出现,万一在用户使用过程中发现了bug,应该迅速打补丁或升级软件。

❺ python面试必备题目有哪些

Q:你做一个自我介绍吧?
旁白:其实遇到好几家面试官都让我做自我介绍了,该如何自我介绍阳哥估计都会背了,好玩(恶心)的是在万达信息面试,面试了3个技术官,每个人都分别让我做了自我介绍,尼玛,他们3个就不会沟通一下要问我啥吗,一个问题至于问我3遍吗~:funk:阳哥是敢怒不敢言,毕竟在人家的地盘。
PS:自我介绍的内容就不说了,每个人都是独特的,我就跟大家说一下应该如何自我介绍吧。
一个优良的自我介绍会给面试官留下深刻的印象,大部分情况下,所谓的面试好坏其实看的就是你给面试官留下的印象怎么样了,我们用俗语叫感觉。
自我介绍应该分以下几个部分,按照一定的逻辑连贯起来。如果连贯不起来,或者不够熟练一定在台下多背几遍,多讲几遍,但是面试的时候不要说的跟背过似的,高境界就是让面试官感觉你是临场发挥的,却又比背的都好。
1)个人基本信息(姓名、年龄、老家、居住地等)
2)自己来自哪里(工作地点),是干什么的(给自己一个清晰的定位,比如:我是一名Android开发工程师),担任过什么职务、做过什么样的项目
3)自己为何来贵公司面试
4)最后祝愿(希望能得到贵公司的认可等等,不用太多,一两句话就ok)
Q:介绍一下你做过的项目吧?
PS:黑马那么多项目,随便准备3个就ok了。
介绍项目大概的思路如下:
1)这个项目是干什么的(比如是一个类似网易新闻的地方新闻客户端,或者类似美团的o2o,或者类似豌豆荚的一个应用市场,或者类似淘宝的购物平台)?解释就是拿一个市场上耳熟能详的应用跟自己的应用做类比,省的面试官听的云里雾里的。
2)自己负责了哪些模块(功能)的职责(比如负责系统的架构,核心代码的编写,xx功能模块的开发等等)
3)自己在这个项目中担当的责任(比如,这个项目是自己独立开发的,这个项目是和另外一个同事一起架构一起开发的,这个项目是自己负责了几个核心模块)
4)项目中都用到了哪些技术
5)从项目中学到了哪些东西(可以从技术方向和业务两个方向入手)
旁白:面试官问的很多技术性问题跟之前问的都大同小异,因此这里只给出有特色且技术含量高的。阳哥正在写面试宝典,该宝典核心内容针对的还是技术问题,阳哥会从javase基础到javase高级,从Android基础到Android高级以及到Android项目依次展开分析,其次也会写一些常见的非技术性问题,敬请期待~
Q:①在Listview的优化中,我们为何使用ConvertView?②为何使用ViewHolder?③你认为哪个更能解决问题?④你认为view.inflate和view.findviewById哪个更耗时,为什么?⑤如果这两个AP让你重新写,你怎么写?
PS:上面的问题,阳哥认为是面试以来遇到很难的一个,也是很有技术含量的一道题。前一半问题还好回答,最后一个问题真的需要发挥想象了。
A:①使用ConvertView可以实现对view的复用,这样大大节约了每次创建对象的时间,提升了ListView的显示效率。②使用ViewHolder作为内部类,可以将view的子控件封装在ViewHolder类中,然后通过View.setTag(ViewHolder)将view和ViewHolder进行绑定,这样我们就不用每次都调用view的findViewById(id)方法来查找控件。③使用ConvertView解决了一大部分问题,使用ViewHolder实现了控件换时间的问题,因为给View对象设置一个Tag本身就是占用内存的,因此ViewHolder的使用还是需要区分不同的应用场景的, 没有绝对的好与不好。如果内存足够需要高效则ViewHolder建议使用,否则不建议使用。④当然是view.inflate耗时,这个函数完成的功能是把xml布局文件通过pullParser的形式给解析到内存中,需要io,需要递归子节点。⑤我其实还不太相信我写出来的代码比Google官方写的好,如果让我写的话我可能会这样考虑,当用户在使用view.inflate的时候将多个id作为数组添加到形参中,这样在初始化view的使用我就可以给这个view直接调用setTag方法绑定需要的子控件。不过这个原生方法其实也应该保留共不同的需求使用。
PS:技术面试时间并不长,我回答了几个之后,他们两个大眼瞪小眼,A看看B问:你还有什么问的吗?B说我没有,你还有吗?A说我也没了。那行,接下来,他们就让我等人事了。

❻ 面试题:你为什么选择python

为什么Python比MATLAB、R语言好呢?
其实,这三种语言都很多数据分析师在用,但更推荐python,主要是有以下几点:
1、python易学、易读、易维护,处理速度也比R语言要快,无需把数据库切割;
2、python势头猛,众多大公司需要,市场前景广阔;而MATLAB语言比较局限,专注于工程和科学计算方面,而且MATLAB价格贵,免费版或盗版都只能玩玩学习用;
3、python具有丰富的扩展库,这个是其他两个不能比的;
python版本选择
初学者版本选择是很多人都会问的,我们也不会偏向某个版本,主要根据自己的所需,但建议是选择最新版本Python3.x,这样很多新功能和旧功能都会有的,但是目前很多第三方库仍然不支持Python3,因为Python2.x已经停止继续开发,不意味着不能使用。

❼ python 经典面试题有哪些

所说所有的变量都是对象。 对象在python里,其实是一个指针,指向一个数据结构,数据结构里有属性,有方法。对象通常就是指变量。从面向对象OO的概念来讲,对象是类的一个实例。在python里很简单,对象就是变量。class A:myname="class a"上面就是一个类。不是对象a=A()这里变量a就是一个对象。它有一个属性(类属性),myname,你可以显示出来print a.myname所以,你看到一个变量后面跟点一个小数点。那么小数点后面

❽ Python面试题

呵呵,教材丢了没有,在比较运算符那一节,一般是第一章有介绍,【结连比较】,书上的例子可能是a<b<c的判断,表示两个同时满足。
1<2==2 表示的意思是 1<2 AND 2==2,因此结果是True,明白了么
后面一个不讲了吧,分布运算,第二步是1<True

❾ 如何面试Python后端工程师

面试题
1、Python是如何进行内存管理的?

Python的内存管理主要有三种机制:引用计数机制、垃圾回收机制和内存池机制。

a. 引用计数

当给一个对象分配一个新名称或者将一个对象放入一个容器(列表、元组或字典)时,该对象的引用计数都会增加。

当使用del对对象显示销毁或者引用超出作用于或者被重新赋值时,该对象的引用计数就会减少。

可以使用sys.getrefcount()函数来获取对象的当前引用计数。多数情况下,引用计数要比我们猜测的大的 多。对于不可变数据(数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。

b. 垃圾回收

当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。


两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用
计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。

c. 内存池机制

Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。

1)Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。

2)Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的 malloc。

3)对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。
【Python环境】12道 Python面试题总结

2、什么是lambda函数?它有什么好处?

lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数

lambda函数:首要用途是指点短小的回调函数

lambda [arguments]: expression

>>> a=lambda x,y:x+y

>>> a(3,11)

3、Python里面如何实现tuple和list的转换?

直接使用tuple和list函数就行了,type()可以判断对象的类型。

4、请写出一段Python代码实现删除一个list里面的重复元素。

这个地方用set可以实现。

5、Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。

浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如list();3,模块的()函数}

深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){模块的deep.deep()函数}

6、介绍一下except的用法和作用?

try…except…except…[else…][finally…]

执行try下的语句,如果引发异常,则执行过程会跳到except语句。对每个except分支顺序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。

try下的语句正常执行,则执行else块代码。如果发生异常,就不会执行

如果存在finally语句,最后总是会执行。
【Python环境】12道 Python面试题总结

7、Python里面match()和search()的区别?

re模块中match(pattern,string [,flags]),检查string的开头是否与pattern匹配。

re模块中research(pattern,string [,flags]),在string搜索pattern的第一个匹配值。

>>> print(re.match(‘super’, ‘superstition’).span())

(0, 5)

>>> print(re.match(‘super’, ‘insuperable’))

None

>>> print(re.search(‘super’, ‘superstition’).span())

(0, 5)

>>> print(re.search(‘super’, ‘insuperable’).span())

(2, 7)

8、用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别?

术语叫贪婪匹配( <.*> )和非贪婪匹配( <.*?> )

例如:

test

<.*> :

test

<.*?> :

9、以下的代码的输出将是什么? 说出你的答案并解释

输出:

使你困惑或是惊奇的是关于最后一行的输出是 3 2 3 而不是 3 2 1。为什么改变了 Parent.x 的值还会改变 Child2.x 的值,但是同时 Child1.x 值却没有改变?


个答案的关键是,在 Python
中,类变量在内部是作为字典处理的。如果一个变量的名字没有在当前类的字典中发现,将搜索祖先类(比如父类)直到被引用的变量名被找到(如果这个被引用的
变量名既没有在自己所在的类又没有在祖先类中找到,会引发一个 AttributeError 异常 )。

因此,在父类中设置 x = 1 会使得类变量 X 在引用该类和其任何子类中的值为 1。这就是因为第一个 print 语句的输出是 1 1 1。

随后,如果任何它的子类重写了该值(例如,我们执行语句 Child1.x = 2),然后,该值仅仅在子类中被改变。这就是为什么第二个 print 语句的输出是 1 2 1。

最后,如果该值在父类中被改变(例如,我们执行语句 Parent.x = 3),这个改变会影响到任何未重写该值的子类当中的值(在这个示例中被影响的子类是 Child2)。这就是为什么第三个 print 输出是 3 2 3。

10、以下代码将输出什么?

答案

以上代码将输出 [],并且不会导致一个 IndexError。

正如人们所期望的,试图访问一个超过列表索引值的成员将导致 IndexError(比如访问以上列表的 list[10])。尽管如此,试图访问一个列表的以超出列表成员数作为开始索引的切片将不会导致 IndexError,并且将仅仅返回一个空列表。
【Python环境】12道 Python面试题总结

一个讨厌的小问题是它会导致出现 bug ,并且这个问题是难以追踪的,因为它在运行时不会引发错误。

11、以下的代码的输出将是什么? 说出你的答案并解释?

你将如何修改 extendList 的定义来产生期望的结果

以上代码的输出为:

许多人会错误的认为 list1 应该等于 [10] 以及 list3 应该等于 ['a']。认为 list 的参数会在 extendList 每次被调用的时候会被设置成它的默认值 []。

尽管如此,实际发生的事情是,新的默认列表仅仅只在函数被定义时创建一次。随后当 extendList 没有被指定的列表参数调用的时候,其使用的是同一个列表。这就是为什么当函数被定义的时候,表达式是用默认参数被计算,而不是它被调用的时候。

因此,list1 和 list3 是操作的相同的列表。而 ````list2是操作的它创建的独立的列表(通过传递它自己的空列表作为list``` 参数的值)。

extendList 函数的定义可以做如下修改,但,当没有新的 list 参数被指定的时候,会总是开始一个新列表,这更加可能是一直期望的行为。

12、以下程序输出什么?


吧,第一行代码觉对是我第一次见,第一行输出的是[[], [], [], [], []],一个含有5个空列表的列表,而第二行输出的是[[10],
[10], [10], [10],
[10]],我只能解释为这5个列表指向了同一个列表,所以修改任意一个其它4个都会改变,可以用list[0]=10 断开一个连接试试。

❿ python面试题

1. 可以是字典
2. 可以是json字串
3. 可以是list,每个逗号都是一个item

阅读全文

与python面试题汇总50问相关的资料

热点内容
gif有损压缩 浏览:929
windows下安装linux命令操作 浏览:840
米家app怎么设置进门亮灯 浏览:650
任我行服务器为什么会影响截图 浏览:294
安卓留言板怎么删除 浏览:16
做大厂程序员有什么感受 浏览:239
php文件只读 浏览:772
红色警戒3命令修改器112 浏览:431
安卓税收和苹果税是什么意思 浏览:444
快速排序算法的时间复杂度分析 浏览:110
大龄程序员困境 浏览:268
手机号忘了怎么登录农行app 浏览:571
商品信息管理系统php 浏览:8
效果器app怎么无线连接 浏览:404
clinux线程锁 浏览:851
怎么看新手机安卓充电器是不是原装 浏览:294
32单片机f4点灯源码 浏览:223
车载安卓导航开发者选项怎么开启 浏览:694
学生程序员兼职 浏览:360
androidswitch事件 浏览:998