python技术面试题(十)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: python技术面试题(十)

每日分享

The more you think and talk about your goals, the more positive and enthusiastic you become.

你越多地思考和谈论你的目标,你就越积极和热情。

小闫语录

目标不应该是新年的一条朋友圈,目标不应该是伪装自己的人设,目标更不应该是一时爽的嘴瘾。它应该是我们前进的方向,困境时的希望,向前的动力。立下目标之后,要经常的回顾,思考,不断的修正自己前进的方向,把握住自己。重温当初的激情,让自己走出迷茫,摆脱浑浑噩噩的生活。你应该是那颗最闪耀的星。


面试题

1.在Linux如何查看程序的端口号,需要用什么命令?

netstat -tnulp
------------------------
[ethanyan@localhost ~]$ netstat -tnulp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp6       0      0 :::111                  :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:631                 :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN
tcp6       0      0 :::3306                 :::*                    LISTEN
udp        0      0 0.0.0.0:53814           0.0.0.0:*       
udp        0      0 0.0.0.0:5353            0.0.0.0:*   
udp        0      0 192.168.122.1:53        0.0.0.0:*
udp        0      0 0.0.0.0:67              0.0.0.0:*
udp        0      0 127.0.0.1:323           0.0.0.0:*
udp6       0      0 ::1:323                 :::*
  • -t:显示tcp端口。
  • -u:显示udp端口。
  • -l:仅显示套接字。
  • -p:显示进程标识符和程序名称。
  • -n:不进行DNS轮询,显示IP

2.python如何实现单例模式?请写出两种实现方法。

1)使用 __new__实现:

class Singeton(object):
    __instance = None
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = object.__new__(cls)
        return cls.__instance

2)python的模块就是天然的单例模式,因为模块在第一次导入时,会生成 .pyc文件,当第二次导入的时候,会直接加载这个文件,而不会再执行模块代码。因此我们只需要把相关的函数和数据定义在一个模块中,就可以获得一个单例对象。

-----mysingle.py-----
class MySingle:
    def foo(self):
        pass
sinleton = MySingle()
-----test1.py-------
from mysingle.py import sinleton
sinleton.foo()
-----test2.py-------
from mysingle.py import sinleton
sinleton.foo()

3.设计一个工厂模式。

在项目初期搭建的时候,我们应该想到一个问题,就是在不同的环境下去使用不同的配置,毕竟开发环境和线上环境是不同的,那么如何快速的切换,使得项目不受影响呢?答案就是框架搭建初期,使用工厂类方法创建应用实例。我们以Flask项目为例:

----------config.py----------
from datetime import timedelta
from redis import StrictRedis
#设置配置信息(基类配置信息)
class Config(object):
    #调试信息
    DEBUG = True
    SECRET_KEY = "fdfdjfkdjfkdf"
    #数据库配置信息
    SQLALCHEMY_DATABASE_URI = "数据库地址"
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    #redis配置信息
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379
    #session配置信息
    SESSION_TYPE = "redis" #设置session存储类型
    SESSION_REDIS = StrictRedis(host=REDIS_HOST,port=REDIS_PORT) #指定session存储的redis服务器
    SESSION_USE_SIGNER = True #设置签名存储
    PERMANENT_SESSION_LIFETIME = timedelta(days=2) #设置session有效期,两天时间
#开发环境配置信息
class DevelopConfig(Config):
    pass
#生产(线上)环境配置信息
class ProductConfig(Config):
    DEBUG = False
#测试环境配置信息
class TestConfig(Config):
    pass
#提供一个统一的访问入口
config_dict = {
    "develop":DevelopConfig,
    "product":ProductConfig,
    "test":TestConfig
}
---------info/__init__.py---------
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from redis import StrictRedis
from flask_session import Session
from flask_wtf.csrf import CSRFProtect
from config import config_dict
#定义redis_store变量
redis_store = None
#定义工厂方法
def create_app(config_name):
    app = Flask(__name__)
    #根据传入的配置类名称,取出对应的配置类
    config = config_dict.get(config_name)
    #加载配置类
    app.config.from_object(config)
    #创建SQLAlchemy对象,关联app
    db = SQLAlchemy(app)
    #创建redis对象
    global redis_store #global将局部变量声明为一个全局的
    redis_store = StrictRedis(host=config.REDIS_HOST,port=config.REDIS_PORT,decode_responses=True)
    #创建Session对象,读取APP中session配置信息
    Session(app)
    #使用CSRFProtect保护app
    CSRFProtect(app)
    return app
    -----------manage.py----------
from info import create_app
#调用方法,获取app
app = create_app("product")
if __name__ == '__main__':
    app.run()

4.实现一个简单的装饰器。

def setFunc(func):
    def wrapper(*args,**kwargs):
        print('wrapper context')
        return func(*arg,**kwargs)
    return wrapper
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
23天前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
144 66
|
23天前
|
SQL 数据采集 数据可视化
深入 Python 数据分析:高级技术与实战应用
本文系统地介绍了Python在高级数据分析中的应用,涵盖数据读取、预处理、探索及可视化等关键环节,并详细展示了聚类分析、PCA、时间序列分析等高级技术。通过实际案例,帮助读者掌握解决复杂问题的方法,提升数据分析技能。使用pandas、matplotlib、seaborn及sklearn等库,提供了丰富的代码示例,便于实践操作。
144 64
|
5天前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
29天前
|
算法 数据挖掘 Python
Python中的拟合技术:揭示数据背后的模式
Python中的拟合技术:揭示数据背后的模式
28 0
Python中的拟合技术:揭示数据背后的模式
|
17天前
|
存储 数据可视化 Python
Python编程中的数据可视化技术
在数据驱动的世界中,将复杂的数据集转换为易于理解的视觉表示形式至关重要。本文将深入探讨如何使用Python进行数据可视化,包括选择合适的库、处理数据和设计有效的图表。我们将一起学习如何让数据讲故事,并确保你的信息传达清晰且有影响力。
|
9天前
|
网络协议 安全 Java
难懂,误点!将多线程技术应用于Python的异步事件循环
难懂,误点!将多线程技术应用于Python的异步事件循环
31 0
|
13天前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
|
13天前
|
数据挖掘 计算机视觉 Python
基于Python的简单图像处理技术
【10月更文挑战第4天】在数字时代,图像处理已成为不可或缺的技能。本文通过Python语言,介绍了图像处理的基本方法,包括图像读取、显示、编辑和保存。我们将一起探索如何使用PIL库进行图像操作,并通过实际代码示例加深理解。无论你是编程新手还是图像处理爱好者,这篇文章都将为你打开一扇新窗,让你看到编程与创意结合的无限可能。
|
16天前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
16天前
|
安全 测试技术 Go
Python 和 Go 实现 AES 加密算法的技术详解
Python 和 Go 实现 AES 加密算法的技术详解
46 0