python企业真题实战 - 360 面试题

360 面试题:
  1. 请拿出 B 表中的 accd(A 表中和 B 表中的一样的数据)?
  2. a = “abbbccc”,用正则匹配为 abccc,不管有多少 b,就出现一次?
  3. xpath 使用的什么库?
  4. py2 和 py3 的区别?
  5. Redis 里面 list 内容的长度?
  6. 多线程交互,访问数据,如果访问到了就不访问了,怎么避免重读?
  7. Mysql 怎么限制 IP 访问?
  8. 带参数的装饰器?
考查范围:
  • 数据库 - 内连接查询,限制ip访问
  • 正则表达式 - re.sub()
  • 爬虫 - lxml,xpath
  • python基础 - python2与python3的区别
  • 多任务编程 - 多线程,互斥锁
  • 装饰器 - 带参数装饰器
参考答案
  1. 请拿出 B 表中的 accd(A 表中和 B 表中的一样的数据)?
    在这里插入图片描述
    在这里插入图片描述
    答:select * from B inner join on B.name = A.name
    考查:数据库连接查询之内连接查询

  2. a = “abbbccc”,用正则匹配为 abccc,不管有多少 b,就出现一次?
    答:思路是不管有多少个 b 替换成一个
    re.sub(r’b+’, ‘b’, a)
    考查:正则表达式之re.sub

  3. xpath 使用的什么库?
    答:lxml
    考查:爬虫lxml

  4. py2 和 py3 的区别?
    答:这里例举 5 条
    print 在 Python3 中是函数必须加括号,Python2 中 print 为 class。
    Python2 中使用 xrange,Python3 使用 range。
    Python2 中默认的字符串类型默认是 ASCII,Python3 中默认的字符串类型是 Unicode。
    Python2 中除法的结果是整型,Python3 中是浮点类型。
    Python2 中声明元类:metaclass = MetaClass,Python3 中声明元类:class
    newclass(metaclass=MetaClass):pass。

  5. Redis 里面 list 内容的长度?
    答:len key_name
    考查:redis中的list

  6. 多线程交互,访问数据,如果访问到了就不访问了,怎么避免重读?
    答:创建一个已访问数据列表,用于存储已经访问过的数据,并加上互斥锁,在多线程访问数据的时候先查看数据是否已经在已访问的列表中,若已存在就直接跳过。
    考查:多线程,互斥锁

  7. Mysql 怎么限制 IP 访问?
    答:grant all privileges on . to ‘数据库中用户名’@’ip 地址’ identified by ‘数据库密码’;
    (授权某个ip的用户可以通过密码访问数据库)
    考查:数据库

  8. 带参数的装饰器?
    答:带定长的装饰器
    考查:装饰器

# 添加输出日志的功能
def logging(flag):

    def decorator(fn):
        def inner(num1, num2):
            if flag == "+":
                print("--正在努力加法计算--")
            elif flag == "-":
                print("--正在努力减法计算--")
            result = fn(num1, num2)
            return result
        return inner

    # 返回装饰器
    return decorator


# 使用装饰器装饰函数
@logging("+")
def add(a, b):
    result = a + b
    return result


@logging("-")
def sub(a, b):
    result = a - b
    return result

result = add(1, 2)
print(result)

result = sub(1, 2)
print(result)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章