第二天面试题总结

1,你用的Django和Flask有什么不一样?   django走的是大而全的路线,是重量型的框架,flask是一轻量级的框架

  django事模块式的开发方式:1,有完善的ORM模型,评价略高于sqlAlchemy,和模板引擎(强大程度略低于jinja)2,非常适合企业级的开发(高效,稳定,)3,开发文档比较完善。

  flask走的是灵活多变的路线,1,有各种第三方的插件支持,可拓展性强。2,flask与关系型数据库的配合不弱于django,但与Nosql非关系型数据库的配合由于django。3,适应小网站         Flask    •Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过    •Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库    •入门简单,即便没有多少web开发经验,也能很快做出网站    •非常适用于小型网站    •非常适用于开发web服务的API    •开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验    •各方面性能均等于或优于Django    •Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库    •Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一    •Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django    •Flask比Django更加Pythonic,与Python的philosophy更加吻合

  Django    •Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高    •Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉    •Django的自带ORM非常优秀,综合评价略高于SQLAlchemy    •Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja    •Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山    •Django目前支持Jinja等非官方模板引擎    •Django自带的数据库管理app好评如潮    •Django非常适合企业级网站的开发:快速、靠谱、稳定    •Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭    •Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植    •Django上手也比较容易,开发文档详细、完善,相关资料丰富

2,你在开发的过程中技术方面有什么问题?怎么解决的?

 解决方案如下:

  1) 自己查阅官网,看官方文档,查看源码,还有就是自己平时的积累(包括看书、资料、博客等等)

  2) 找度娘、谷爹(这里我推荐用Shadowsocks,一年大概是100RMB,比较稳定,当然了大家可以自己去找免费的FQ软件)

  3) 去技术论坛求助。这里包括CSDN 、 Stack Overflow 、 博客园、开源中国等等 。很多人对于技术论坛求助比较懵逼,不知道怎么求助。这里分享两个:CSDN:新人提问指南  、  如何优雅的使用Stack Overflow 。 要记住,提出的问题要经过自己的研究,也不要害怕提问。

  4) 找身边朋友、技术群的朋友问问(记住5W 1H原则)

  5) 向公司同事和leader请教,切记,这里放到第五步就是告诉大家,跟同事和朋友请教问题之前,最好自己先有过尝试,查阅过相关资料,这样你才能对问题描述的很清楚。另外如果一个问题你独自用前面四种方案花了2小时还没解决,请立马请教你们公司的技术牛人并上报leader(我们公司要求是1小时)

  6) 如果是特殊问题,比如一些性能问题/ 接口响应缓慢等等 ,这些就需要各位看官自己的积累了,还有就是熟练运用 jdk自带的分析工具,比如jconsole、jstack等等

3,文档分布式存储熟悉吗?

4,自己搭建过docker吗?  Docker能解决什么问题呢?  一个工具的出现必然需要解决一些问题,Docker也不例外,简单说说我们常见的2种情况Docker是如何解决的吧。  1、程序在我这跑得好好的,在你那怎么就不行呢?!  这是一个典型的应用场景,作为程序员别说没有遇到过这个问题。Docker image(镜像)中不仅包含了代码,也包含了程序运行时所需的所有依赖。比如java的程序,肯定要在image中包含jdk;比如Python的程序,肯定要在image中包含对应版本的Python解释器。程序在我这跑得好好的,去你那就不行了,这显然是环境问题,Docker把整个运行时环境打包放到image中,所以搞定了环境依赖问题!  这点很重要么?真的很重要!我们知道,一个程序要跑起来,需要这么几部分:代码 + 运行环境 + 配置 + 依赖的服务。代码当然就是同一份代码,不同的环境都一样,通常不会有问题。但是问题的关键就在于环境和配置,不同的环境、不同的配置,同样的代码就不一定能按部就班的跑起来了。Docker image中包含了运行环境+配置,既能够确保环境和配置的统一,也能够方便快速的部署。  所以总结起来就是:Docker解决了运行环境和配置问题,方便发布,也就方便做持续集成。  2、系统好卡,肯定是又有哪个哥们的程序在作孽了  现在的服务器都牛的很,动不动128G内存,24个CPU,Linux本身就是个多租户的操作系统,可以多人共用,但是如果某个程序狂吃内存和CPU,占用了太多系统资源,这就会影响其他程序的运行。  一个公司的几个同事共用一台机器出现这种问题可以通过内部协调沟通解决。但是云主机提供商呢?不同的用户之间不认识,共用一台强大的计算机,结果某个程序耗尽了资源,用户肯定不乐意了。所以虚拟机出现了,良好了做了资源隔离,不同用户之间彼此老死不相往来,不会相互影响,世界一下子清静了。但是,虚拟机有缺点:创建速度慢,迁移起来麻烦,因为中间加了一层guest os,有了性能损耗,一个牛逼的机器也就创建十几个虚拟机,太浪费了...  相对虚拟机的重量级虚拟化方案,Linux内核级的一些隔离方案让人们看到了希望,cgroups、namespace、tc、quota、chroot、lxc。终于,Docker出现了,Docker利用这些成熟的技术,让虚拟化变得轻量了起来,创建一个container瞬间完成,秒级!cpu指令集不再被翻译执行,性能损耗非常少,虽说隔离性没有虚拟机那么彻底,安全性上稍差一些,但也基本可以用,不用太担心~  所以总结起来就是:更轻量的虚拟化,节省了虚拟机的性能损耗

猜你喜欢

转载自www.cnblogs.com/Rglin/p/10786336.html