Python 开发面试题
Python部分
- 将一个字符串逆序,不能使用反转函数
- 求从10到100中能被3或5整除的数的和
- What is Python? What are the benefits of using Python?
- What is PEP 8?
- What is pickling and unpickling?
- How Python is interpreted?
- What are the tools that help to find bugs or perform static analysis?
- What are Python decorators?
- What is the difference between list and tuple?
- What are the built-in type does python provides?
- What is namespace in Python?
- What is lambda in Python?
- In Python what are iterators?
- What is unittest in Python?
- What are generators in Python?
- How can you copy an object in Python?
- What is module and package in Python?
- Mention what are the rules for local and global variables in Python?
- Explain how can you make a Python Script executable on Unix?
- Explain how to delete a file in Python?
- How can you share global variables across modules?
- Explain how can you generate random numbers in Python?
- Explain how can you access a module written in Python from C?
-
Mention the use of // operator in Python?
- Mention five benefits of using Python?
-
a=1, b=2, 不用中间变量交换a和b的值
-
请用自己的算法, 按升序合并如下两个list, 并去除重复的元素list1 = [2, 3, 8, 4, 9, 5, 6]list2 = [5, 6, 10, 17, 11, 2]
- 写一个简单的python socket编程
- 请描述set的用途并举例说明
- 请简述python2.x 与python3.x的主要区别
- 简述python新式类和旧式类的区别
- Python里面search()和match()的区别?
- 用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别?
- 请简述线程\进程\协程的特性
- 请简述你对python闭包的理解
-
静态函数, 类函数, 成员函数的区别?
- Python和c和Java的对比
- Python的内存管理
- Python的装饰器内部实现原理
- Python的面向对象和Java面向对象的区别
- Python面向对象的静态方法
- Python为啥是动态语言
- 动态语言和静态语言的区别
- 描述你知道的设计模式及各模式特点
- 算法(冒泡,二叉树,堆排序等)
- Python的线程
- Python的进程
- Python的线程池
- Python的面向对象和c面向过程的区别
- 为什么c没有面向对象依然可以封装函数
- 请用多线程并发爬取3个知名网站的首页
-
解释一下 Django 和 Tornado 的关系、差别
Django源自一个在线新闻 Web站点,于 2005 年以开源的形式被释放出来。
Django 框架的核心组件有:
用于创建模型的对象关系映射为最终用户设计的完美管理界面一流的 URL 设计设计者友好的模板语言缓存系统等等
它鼓励快速开发,并遵循MVC设计。Django遵守 BSD版权,最新发行版本是Django
1.4,于2012年03月23日发布.Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not RepeatYourself)原则。
Tornado是 FriendFeed使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像 web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具和优化。Tornado 和现在的主流 Web 服务器框架(包括大多数Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题。 -
解释下django-debug-toolbar的使用
使用django开发站点时,可以使用django-debug-toolbar来进行调试。在settings.py中添加’debug_toolbar.middleware.DebugToolbarMiddleware’到项目的MIDDLEWARE_CLASSES 内。 -
如何进行Django单元测试Django的单元测试使用python的unittest模块,这个模块使用基于类的方法来定义测试。类名为django.test.TestCase,继承于python的unittest.TestCase。from django.test import TestCasefrom myapp.models import Animalclass AnimalTestCase(TestCase):def setUp(self):Animal.objects.create(name="lion", sound="roar")Animal.objects.create(name="cat", sound="meow")def test_animals_can_speak(self):"""Animals that can speak are correctly identified"""lion = Animal.objects.get(name="lion")cat = Animal.objects.get(name="cat")self.assertEqual(lion.speak(), 'The lion says "roar"')self.assertEqual(cat.speak(), 'The cat says "meow"')
python manage.py testanimals.tests -
解释下Http协议HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 -
解释下Http请求头和常见响应状态码
Accept:指浏览器或其他客户可以接爱的MIME文件格式。可以根据它判断并返回适当的文件格式。
Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是ISO-8859-1.
Accept-Language:指出浏览器可以接受的语言种类,如en或en-us,指英语。
Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式。
Cache-Control:设置关于请求被代理服务器存储的相关选项。一般用不到。
Connection:用来告诉服务器是否可以维持固定的HTTP连接。HTTP/1.1使用Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接。
Content-Type:用来表名request的内容类型。可以用HttpServletRequest的getContentType()方法取得。
Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常 -
django models 中如何实现反向查找? 如a表中通过外键关联了b表, 那通过b表如何反查到a表中有多少记录关联到了b表中的某条记录
- django orm如何输入自定义的原少sql语句?
- 描述django orm query api中 Q语句与F语句的作用及区别
- django中如何实现ajax在post数据时出现的csrf 403 forbidden的问题?描述解决步骤
- django 自定义标签tag的作用,及配置步骤
前端篇
-
有哪项方式可以对一个DOM设置它的CSS样式?•外部样式表,引入一个外部css文件
•内部样式表,将css代码放在 <head> 标签内部
•内联样式,将css样式直接定义在 HTML 元素内部 -
CSS都有哪些选择器?•派生选择器(用HTML标签申明)
•id选择器(用DOM的ID申明)
•类选择器(用一个样式类名申明)
•属性选择器(用DOM的属性申明,属于CSS2,IE6不支持,不常用,不知道就算了)
除了前3种基本选择器,还有一些扩展选择器,包括•后代选择器(利用空格间隔,比如div .a{ })
•群组选择器(利用逗号间隔,比如p,div,#a{ })
那么问题来了,CSS选择器的优先级是怎么样定义的? -
CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内?设置display属性为none,或者设置visibility属性为hidden
最基本的:技巧性:设置宽高为0,设置透明度为0,设置z-index位置在-1000 -
rgba()和opacity的透明效果有什么不同?答案: rgba()和opacity都能实现透明效果,但最大的不同是opacity作用于元素,以及元素内的所有内容的透明度,而rgba()只作用于元素的颜色或其背景色。(设置rgba透明的元素的子元素不会继承透明效果!)
-
px和em的区别?px和em都是长度单位,区别是,px的值是固定的,指定是多少就是多少,计算比较容易。em得值不是固定的,并且em会继承父级元素的字体大小。 浏览器的默认字体高都是16px。所以未经调整的浏览器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em。
- 已知ID的Input输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架)
- 希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)
- 设置一个已知ID的DIV的html内容为xxxx,字体颜色设置为黑色(不使用第三方框架)
- 如何实现跨域请求?请描述实现原理
- 用js实现随机选取10--100之间的10个数字,存入一个数组,并排序。
- 原生JS的window.onload与Jquery的$(document).ready(function(){})有什么不同?如何用原生JS实现Jq的ready方法?
- window.onload()方法是必须等到页面内包括图片的所有元素加载完毕后才能执行。
- $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。
- 更多js http://blog.jobbole.com/78346/#q3