导航:首页 > 编程语言 > python面试常用库

python面试常用库

发布时间:2022-09-07 15:54:31

python运维开发工程师面试常见问题有哪些

面试python运维开发工程师每家公司对专业知识的考察侧重点是不一样的,下面给你整理了一些,希望能帮助到你!
python
1、python是强类型还是弱类型的语言
2、python的动态性体现在哪
3、python的namespace:四种;len()等函数的命名空间
4、range和xrange的区别,谈到了迭代器
5、于是问怎么实现迭代器,然后又问了生成器,yield语句
6、将list的中的一万条字符串合成一条字符串的方法
7、python多线程(g il)
8、python的三目运算符有吗? 怎么用一行代码实现三目运算
linux
1、问linux命令
2、top和ps在进程占有资源率的统计方式有什么不同
3、然后扯到了页表,内存管理,TLB
5、linux文件系统:inode,inode存储了哪些东西,目录名,文件名存在哪里

② python面试一般问什么常用设计模式

1.设计模式介绍
设计模式(Design Patterns)

——可复用面向对象软件的基础

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

2. 设计模式分类
经典的《设计模式》一书归纳出23种设计模式,这23种模式又可归为,创建型、结构型和行为型3大类

2.1.创建型模式
前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有6个具体的创建型模式可供研究,它们分别是:

简单工厂模式(Simple Factory);

工厂方法模式(Factory Method);

抽象工厂模式(Abstract Factory);

创建者模式(Builder);

原型模式(Prototype);

单例模式(Singleton)。

说明:严格来说,简单工厂模式不是GoF总结出来的23种设计模式之一。

2.2 结构型模式
在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。对象结构的设计很容易体现出设计人员水平的高低,这里有7个具体的结构型模式可供研究,它们分别是:

外观模式(Facade);

适配器模式(Adapter);

代理模式(Proxy);

装饰模式(Decorator);

桥模式(Bridge);

组合模式(Composite);

享元模式(Flyweight)

2.3 行为型模式
在对象的结构和对象的创建问题都解决了之后,就剩下对象的行为问题了,如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高,这里有11个具体的行为型模式可供研究,它们分别是:

模板方法模式(Template Method);

观察者模式(Observer);

状态模式(State);

策略模式(Strategy);

职责链模式(Chain of Responsibility);

命令模式(Command);

访问者模式(Visitor);

调停者模式(Mediator);

备忘录模式(Memento);

迭代器模式(Iterator);

解释器模式(Interpreter)。

3. 设计模式的六大原则
1、开闭原则(Open Close Principle)

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

2、里氏代换原则(Liskov Substitution Principle)

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Bai 网络

3、依赖倒转原则(Dependence Inversion Principle)

这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

5、迪米特法则(最少知道原则)(Demeter Principle)

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)

原则是尽量使用合成/聚合的方式,而不是使用继承。

③ 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的笔试面试题,或题库哪里有

特殊的语句yield, with
垃圾回收机制
Decorators的定义,以及用法
python线程机制以及为啥python多线程很慢。
Errors and Exceptions
还有什么比较重要的,大家帮我想想,我一时想不起来还有哪些比较重要了。

⑤ 心得分享!Python面试都要做哪些准备

首先,准备好简历。找工作,最开始竞争的是什么?最开始竞争的是简历。你到任何一家公司应聘,第一件要做的事情就是投简历,简历是应聘公司了解你的第一窗口,也是应聘公司了解你的第一途径。一份好的简历可以让你在众多的简历中脱颖而出,给招聘者留下深刻印象,然后决定给你面试通知,它是帮助你成功面试的敲门砖。

其次,对于Python常见面试问题要有了解。在面试前我们一定要通过各种渠道了解Python面试中常见的面试问题,做到心中有数。在Python的面试中,一些Python基本常识问题,有些面试官还是会考察的,如果你连基本的常识问题都回答不上来,那么你后面的面试可能无法进行下去,如果能勉强进行下去,最后面试的成功率也会降低。

最后,在面试前准备一套大方得体的服装。穿着得体表现的是对面试的尊重。穿着得体,会给面试官一种愉悦的心情。相反,如果你穿着比较邋遢,当面试官看到你的时候,会觉得你不注意细节,有的面试官甚至会怀疑你的工作能力,这样会给面试官留下非常不好的印象,也可能最后导致面试的失败。

如果在面试前你做好充足的准备,面试官会觉得你是一个对于工作认真、态度真诚的一个人,会增加心里认同感,也会增加面试的成功率。

关于心得分享!Python面试都要做哪些准备,环球青藤小编就和大家分享到这里了,学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚。如果您还想继续了解关于python编程的学习方法及素材等内容,可以点击本站其他文章学习。

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

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

⑦ python要学到什么程度能找工作

下面我们就来看看Python学到什么程度才算是真正学会Python可以去一展身手。

一、确立目标、了解需求

做什么事情都要先确定好目标,才不至于迷失方向。我们就是Python爬虫工程师为职位目标。

通过分析各大招聘网站,我们可以得出以下几点:

1、 python 不是唯一可以做爬虫的,很多语言都可以,尤其是 java,同时掌握它们和拥有相关开发经验是很重要的加分项

2、 大部分的公司都要求爬虫技术有一定的深度和广度,深度就是类似反反爬、加密破解、验证登录等等技术;广度就是分布式、云计算等等,这都是加分项

3、 爬虫,不是抓取到数据就完事了,如果有数据抽取、清洗、消重等方面经验,也是加分项

4、 一般公司都会有自己的爬虫系统,而新进员工除了跟着学习以外最常做的工作就是维护爬虫系统,这点要有了解

5、 最后一个加分项就是前端知识,尤其是常用的 js、ajax、html/xhtml、css 等相关技术为最佳,其中 js 代码的熟悉是很重要的

6、 补充一条,随着手持设备的市场占比越来越高,app 的数据采集、抓包工具的熟练使用会越来越重要

以上内容,不要求全部掌握,但是掌握的越多,那么你的重要性就越高

二、关于Python面试的四点,你做到就万事大吉了!

第一点:Python

因为面试的是Python爬虫岗位,面试官大多数会考察面试者的基础的Python知识,包括但不限于:

Python2.x与Python3.x的区别

Python的装饰器

Python的异步

Python的一些常用内置库,比如多线程之类的

Python的线程

python学习网,大量的免费python学习视频,欢迎在线学习!

第二点:数据结构与算法

数据结构与算法是对面试者尤其是校招生面试的一个很重要的点,当然小公司不会太在意这些,从目前的招聘情况来看对面试者的数据结构与算法的重视程度与企业的好坏成正比,那些从不问你数据结构的你就要当心他们是否把你当码农用的,当然以上情况不绝对,最终解释权归面试官所有。

第三点:Python爬虫

最重要也是最关键的一点当然是你的Python爬虫相关的知识与经验储备,这通常也是面试官考察的重点,包括但不限于:

你遇到过的反爬虫的策略有哪些?

你常用的反反爬虫的方案有哪些?

你用过多线程和异步吗?除此之外你还用过什么方法来提高爬虫效率?

有没有做过增量式抓取?

对Python爬虫框架是否有了解?

第四点:爬虫相关的项目经验

爬虫重在实践,除了理论知识之外,面试官也会十分注重爬虫相关的项目:

你做过哪些爬虫项目?如果有Github最好

你认为你做的最好的爬虫项目是哪个?其中解决了什么难题?有什么特别之处?

以上问题都能解决,面试已经不成问题了。

⑧ 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编程面试常见问题有哪些

Python编程面试题目一:python下多线程的限制以及多进程中传递参数的方式,以及区别


(1)python下多线程的限制以及多进程中传递参数的方式


python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。


多进程间共享数据,可以使用 multiprocessing.Value 和 multiprocessing.Array


(2)python多线程与多进程的区别


在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie)。所以,有必要对每个Process对象调用join()方法 (实际上等同于wait)。对于多线程来说,由于只有一个进程,所以不存在此必要性。


多进程应该避免共享资源。在多线程中,我们可以比较容易地共享资源,比如使用全局变量或者传递参数。在多进程情况下,由于每个进程有自己独立的内存空间,以上方法并不合适。此时我们可以通过共享内存和Manager的方法来共享资源。但这样做提高了程序的复杂度,并因为同步的需要而降低了程序的效率。



Python编程面试题目二:lambada函数


lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。 lambda 函数不能包含命令,它们所包含的表达式不能超过一个。不要试图向lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。


更多关于Python编程的技巧,干货,资讯等内容,小编会持续更新。

⑩ 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面试常用库相关的资料

热点内容
pdf绿色虚拟打印机 浏览:211
androidtab框架 浏览:144
java转php的时间戳 浏览:635
编译libstdc依赖 浏览:655
清算法人与原法人的区别 浏览:407
家庭装修下载什么app软件 浏览:572
美食博主用什么app拍视频 浏览:813
ipone手机如何加密微信 浏览:355
自来水加密阀阀帽 浏览:431
华为交换机dhcp配置命令 浏览:315
androidbitmap缩小 浏览:272
单片机串口控制灯 浏览:84
大讯云服务器安装视频 浏览:785
华为算法领先世界 浏览:654
linux路由重启 浏览:566
php的模板编程 浏览:322
编译器原理与实现书 浏览:711
dos选择命令 浏览:19
apm固件编译到单片机 浏览:123
联通深蓝卡都包含什么app 浏览:266