• 企业真题


    十二章企业真题实战

    一、360 面试题

    1.  请拿出B 表中的accd,(A 表中和B 表中的一样的数据)?
      select * from B inner join on B.name = A.name
    2. a = “abbbccc”,用正则匹配为abccc,不管有多少b,就出现一次?
      1. 思路:不管有多少个b 替换成一个
      2. re.sub(r'b+', 'b', a)
    3. xpath 使用的什么库?

       lxml

    4. redis 里面list内容的长度?
      len key_name
    5. 多线程交互,访问数据,如果访问到了就不访问了,怎么避免重读?

       创建一个已访问数据列表,用于储存已经访问过的数据,并加上互斥锁,在多线程访问数据之前,查看是否已经存在已访问的列表中,若已存在就直接跳过。

    6. Mysql 怎么限制IP访问?

      grant all privileges on .to "数据库中用户名" @“ip地址”  identified by "数据库密码";

    7.  带参数的装饰器?
      代偿参数的装饰器
      def new_func(func):
          def warppedfun(usernaem,password):
              if username =='root' and password == '123456'print("通过认证!")
                      print("开始执行附加功能")
                      return func()
              else:
                      print("用户名账号密码错误")
                      return
          return warppedfun
      
      @new_func
      def orign():
          print("开始执行函数")
      orign('root', '123456')

      带不定长参数的装饰器。

      def new_func(func):
          def warppedfun(*parts):
              if parts:
                  counts = len(parts)
                  print("本系统包含", end='')
                  for part in parts:
                      print(part, '', end='')
                  print('', counts, '部分')
              else:
                  print('用户名或者密码错误')
                  return func()
          return warpperfun
      
      @new_func
      def orign():
          print('开始执行函数')
      
      orign('硬件', '软件', ‘用户数据’)

      同时带不定长、关键字参数的装饰器。

      def new_func(func):
          def warppedfun(*args, **kwargs):
              if args:
                  counts = len(args)
                  print('本系统包含', end='')
                  for arg in args:
                      print(arg, '', end='')
                  print('', counts, '部分')
                  if kwargs:
                      for k in kwargs:
                          v = kwargs[k]
                          print(k, '为:', v)
                  return func()
              else:
                  if kwargs:
                      for kwarg in kwargs:
                          print(kwarg)
                          k, v = kwarg
                          print(k, '为:', v)
                      return func()
              return warppedfun
      
      @ new_func
      def orign():
          print('开始执行函数')
      
      orign('硬件', '软件', ‘用户数据’, 总用户数=5, 系统版本= ‘centos’)

    二、妙计旅行面试题

    1. python主要的内置数据内置数据类型?
      str, int, float, tuple, list, dict, set
    2. print(dir('a'))输出的是什么?
      会打印出字符型的所有的内置方法
      1. ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
      '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__',
      '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
      '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',
      'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition',
      'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate',
      'upper', 'zfill']
    3. 给定两个list,A和B,找出相同元素和不同元素?
      A、B中相同元素:print(set(A)&set(B))
      A、B中不同元素:print(set(A)^set(B))
    4. 请反转字符串?
      new_str = old_str[::-1]
    5. 用select语句输出每个城市中心大于20km酒店数量?
      slecet count(hotel) from hotel_table where distance > 20 group by city
    6. 给定一个有序列表,请输出要插入值k所在的索引位置?
      def instance(list, key):
        if key < list[0]:
          position = 0
             elif  key > list[-1]:
                     position = len(list) -1
             else:
             for  index in range(list):
                  if key > list[index] and list[index] > key:
                  position = index
    7. 正则表达式贪婪匹配与非贪婪匹配的区别?
      在形式上非贪婪匹配模式有一个“?”作为该部分的结束标记
      在功能上贪婪模式是尽可能多的匹配当前正则表达式,可能会包含好几个满足表达式的字符串,非贪婪模式,在满足所有正则表达式的情况下尽可能减少当前匹配表达式
    8. 写出开头匹配字母和下划线,末尾是数字的正则表达式?
      ^[A-Za-z]|_.*d$
    9. 请署名HTTP状态码的用途,请说明常见状态码及其意义?
      通过状态码告诉客户端服务器的执行状态,以判断下一步改执行什么操作。
      常见的状态机器码有:

      100-199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。
      200-299:表示服务器成功接收请求并已完成处理过程,常用200(OK 请求成功)。
      300-399:为完成请求,客户需要进一步细化请求。302(所有请求页面已经临时转移到新的url),
      304、307(使用缓存资源)。
      400-499:客户端请求有错误,常用404(服务器无法找到被请求页面),403(服务器拒绝访问,
      权限不够)。
      500-599:服务器端出现错误,常用500(请求未完成,服务器遇到不可预知的情况)。

    10. 当输入http://www.baidu.com 时,返回页面的过程中发生了什么?
      1>浏览器想DNS服务器发送baidu.com域名请求;
      2>DNS服务器返回解析后的ip发送给客户端浏览器,浏览器向该ip发送页面请求;
      3>DNS服务器接收到请求后查询该页面,并将页面发送给客户端浏览器;
      4>客户端浏览器接收到页面后,解析页面中的引用,并再次向服务器发送引用资源请求;
      5> 服务器接收到资源请求后,查询并返回资源给客户端;
      6> 客户端浏览器接收到资源后,渲染,输出页面展现给用户
    11. 有一个多层嵌套列表A=[1,2,[3.4["434",[...]]]]请写一段代码遍历A 中的每一个
      元素并打印出来

      a= ["a","b",["1","3",["4","haha"]]]
      for b in a :
          for c in b :
              for d in c :
                  print(d)            
    12. 关系型数据库中,表和表之间有左连接,内连接,外连接,分别解释下塔恩的含义和区别?
      内连接查询:查询结果为两个表匹配到的数据
      右链接:查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充
        

      左连接查询:查询结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充
               

    13. 如何定时启动你的爬虫项目?
      1.最简单的方法:直接使用timer类

      import time
      import os
      while 1:
          os.system("scrapy crawl News")
      
      time.sleep(86400)

      2.使用sched

      import sched
      # 初始化sched模块的scheduler类
      # 第一个参数是一个可以返回时间戳的函数,第二个参数可以定时未到之前阻塞
      schedule = sched.scheduler(time.time, time.sleep)
      
      #被周期性调度出发的函数
      def fun():
          os.system("scrapy crawl News")
      
      def perform1(inc):
          schedule.enter(inc,0, perform1, (inc,))
          func()  # 需要周期执行函数
      
      def mymain():
          schedule.enter(0,0, perform1, (86400))
      
      if __name__ = "__main__":
          mymain()
          schedule.run() # 开始运行,直到计划时间队列变为空为止

      3. 使用Crontab

      0 */24 * * * cd /data/spider && scrapy crawl article 

      参考博客:https://blog.csdn.net/gaoshanliushui131/article/details/72721704

    14. 什么是scrapy-redis中的指纹,是如何去重的?
      指纹:通过shal加密。把请求体,请求方式,请求url放在一起,然后进行16进制的转义符字符串生成指纹,生成一个字符串,放到一个字符串中,梵高数据库中作为唯一标识
      去重:urll中按照url去重:1.按照url去重,有一个列表,发送请求之前从数据表中看一下这个url有没有请求过,有请求过就不用看了。2. 内容判断:从数据库中查询数据的表示,如果请求过了就不在请求

    15. 优化代码主要从哪些方面考虑?
      具体的链接:http://python.jobbole.com/81956/
      1.优化算法时间复杂度
      2.减少冗余数据
      3.合理使用copy和deepcopy
      4.使用dict或set查找元素
      5.合理使用生成器(generator)和yield
      6.优化循环
      7.优化包含多个判断表达式的顺序
      8.使用join合并迭代器中的字符串
      9.选择合适的格式化字符串方式
      10.不借助中间变量交换两个变量的值
      11.使用if is
      12. 使用级联比较 x<y<z
      13. while 1 比while True 更快
      14.使用**而不是pow
      15.使用cProfile,cStringI()和cPickle等用c实现相同功能(分别对应profile,StringI(), pickle)
      16.使用最佳的反序列化方式
      17.使用C扩展(Extension)
      18.并行编程
      19.终极大杀器:PyPy
       20.性能分析工具

    16. Django项目的优化(web通用)
      1.优化数据库查询:
        1.1一次性提供所有的数据
        1.2 仅提供相关的数据
      2.代码优化
              2.1 简化代码
              2.2 更新或替换第三方软件包
              2.3 重构代码
      更多详情参考博客:http://python.jobbole.com/88971/

    三、智慧星光面试题(

    这家公司主要做舆情分析,问题主要集中在页面解析和Selenium+Phantom JS 解析复杂页面,ajax
    页面请求等,图片识别,机器学习。

    1. 定义A=("a", "b", "c", "d" ),执行del A[2]后的结果为(D):
      A: (“a”, “c”, “d”)
      B: (“a”, “b”, “c”)
      C: (“a”, “b”, “d”)
      D: 异常

     

  • 相关阅读:
    技术债务MartinFlower
    如何定义产品愿景
    领域驱动设计阶段知识总结
    领域驱动设计的价值
    什么是数字产品
    NestOS 发布:基于华为欧拉开源系统的云底座操作系统
    架子鼓MIDI及相关软件
    TM4 JDK1.8连接SqlServer报错:The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL)
    关于GPL协议的理解(开源与商用、免费与收费的理解)
    nest js 限制客户端在一定时间内的请求次数
  • 原文地址:https://www.cnblogs.com/yang950718/p/10891949.html
Copyright © 2020-2023  润新知