面试题5

考试题目

第一部分:Python基础部分(13分)

  1. 写代码实现:val = “i am a string”,实现一个方法,将字符串逆序输出(2分)

               v1=val[::-1]

  1. 判断101-200之间有多少个质数(2分)
    提示:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的书叫质数
    1. b = 0
      for a in range(101, 201):
          k = 0
          for i in range(2, a):
              if a % i == 0:
                  k += 1
          if k == 0:
              b += 1
      print(b)
      

        

  2. 简述正则表达式中的贪婪匹配并举例说明(2分)
    1. 1.什么是正则表达式的贪婪与非贪婪匹配
      
        如:String str="abcaxc";
      
          Patter p="ab.*c";
      
        贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab.*c)。
      
        非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab.*c)。
      
      2.编程中如何区分两种模式
      
        默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
      
        量词:{m,n}:m到n个
      
           *:任意多个
      
           +:一个到多个
      
           ?:0或一个
      

        

  3. 写代码(3分)
              v1 = {11,22,33}
              v2 = {22,44,55}
     a. 如何获取 v1 中存在而v2中不存在的值?
     b. 如何获取 v2 中存在而v2中不存在的值?
     c. 如何获取v1和v2中都存在的值?
    1. l3 = v1-v2
      l4 =  v2-v1
      l5= v1&v2
      

        

  4.  请编写一个函数实现将IP地址转换成一个整数(4分)

         如 10.3.9.12 转换规则为:

                  10            00001010
                    3            00000011

                  9            00001001
                  12            00001100

 

def iptoint(num):
    h = []
    s = num.split(".")
    for temp in s:
        a = bin(int(temp))[2:]
        a = a.zfill(8)
        h.append(a)
        g = "".join(h)
        e = int(g, 2)
    print(e)



iptoint('7.91.205.21')

  

       再将以上二进制拼接起来计算十进制结果,即:
              00001010 00000011 00001001 00001100 = ?

第二部分:MySQL数据库(22分)

  1. MySQL中char和varchar的区别(1分)?
    1. 变长度和定长度,找的速度定长快点
  2. MySQL中varchar(50)的50表示什么意思?(1分)
    1. VARCHAR列中的值为可变长字符串。长度可以指定为0到65535之间的值。VARCHAR的最大有效长度由最大行大小和使用的字符集确定。在MySQL 4.1之前的版本,VARCHAR(50)的“50”指的是50字节(bytes)。如果存放UTF8汉字时,那么最多只能存放16个(每个汉字3字节)。从MySQL 4.1版本开始,VARCHAR(50)的“50”指的是50字符(character),无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个。
  3. left join、right join以及inner join的区别?(2分)
    1. left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 
      right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
      inner join(等值连接) 只返回两个表中联结字段相等的行
  4. MySQL组合索引(2分)
    where子句中有a、b、c 三个查询条件,创建一个组合索引 abc(a,b,c),那么如下那中情况会命中索引:
             a.  where (a)
             b.  where (b)
             c.  where (c)
             d.  where (a,b)
             e.  where (b,c)
             f.  where (a,c)
             g.  where (a,b,c)
    1.   
  5. 假设学生Student和教师Teacher关系模型如下:(4分)
            Student(学号、姓名、性别、类型、身份证号)
            Teacher(教师号、姓名、性别、类型、身份证号、工资)
    其中,学生表中类别为“本科生”和“研究生”两类;性别为“男”和“女”两类。
    a. 性别为女的所有学生。
    b. 学生表中类别分别对应的个数。
    c.工资少于10000的女研究生教师的省份证和姓名。
    d. 研究生教师平均工资、最高和最低工资。
    1.   

id(自增主键)

name(非空)

balance(非空)

1

A

19.50

2

A

20.50

3

B

100.00

  1. 根据如下表结构建表:(2分)

id

name

order_time

sku

1

铁锤

2018/11/11

篮球

2

铁锤

2018/11/12

足球

3

钢弹

2018/11/01

电脑

4

钢弹

2018/11/15

水杯

  1. 根据如下表查询每个用户第一次下订单的时间。(2分)

  2. 有一个订单系统包含订单信息、商品信息、价格信息且还要一些状态,如何设计表结构(2分)
  3. 有如下表:(3分)
            products(商品表)    columns为 id、name、price
            orders(商城订单表)    columns为 id、reservations_id、product_id、quantity(数量)
            reservations(酒店订单表)    columns为 id、user_id、price、created_at
    a. 各个商品的售卖情况,需要字段:商品名、购买总数、商品收入(单价*数量)
    b. 所有用户在2018-01-01至2018-02-01下单次数、下单金额、商城下单次数、商城下单金额
    c. 历月下单用户数:下单1次的用户数、下单2次的用户数、下单3次及以上的用户数
  4. 根据表写SQL语句:(5分)
  • 查询所有同学的学号、姓名、班级名称。(1分)
  • 查询没有学生的所有班级。(2分)
  • 查询有学生的所有班级的名称和学数量。(2分)

第三部分:Django20分)

  1. 列举你熟悉的Http协议头以及作用。(1分)
  2. 状态码含义:200、301、302、304、404、500。(2分)
    1. 200:访问成功(表示一切正常,返回的是正常请求结果)
      302:临时重定向(指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出)
      304:未修改(表示客户机缓存的版本是最新的,客户机应该继续使用它。)
      404:访问的文件不存在(服务器上不存在客户机所请求的资源)
      500:内部服务器错误(服务器端的CGI、ASP、JSP等程序发生错误)
  3. 简述cookie和session?(2分)
  4. django中get和filter的区别?(1分)
  5. django的中间件在1.7和1.11版本间有什么区别?(1分)
  6. django中contenttypes组件的作用?(1分)
  7. django中Q的作用?(2分)
  8. 将如下SQL语句使用Django的ORM实现:(3分)
    select * from order where id >= 12
    select * from order where id != 12
    select * from order where id in [1,3,4]
    select * from order where id between 20 and 100
    select * from order where id > 20 and (num < 60 or num > 70 )
    select * from order order by id desc,age asc
  9. 编写查询语句:(5分,前2个每个1分,最后一题3分)
     
       

  • 查看所有学生,并打印 姓名、班级名称
  • 查看班级名称为"全栈12期"的所有学生
  • 查看没有学生的所有班级ID、班级名称
  1. django中遇到复杂的SQL时ORM无法完成,如何使用原生SQL执行?(2分)

第四部分:路飞学城相关(32分)

  1. 简述 restful 规范?(2分)
  2. 简述 django rest framework的各大组件以及作用(2分)
  3. 路飞学城购物流程中为什么使用Redis?(1分)
  4. 请简要写出路飞学城购物流程在redis中的数据结构?以及简述为何如此设计?(2分)
  5. 支付宝支付时付款金额的精度?(1分)
  6. 支付宝支付时用的什么加密?(1分)
  7. 支付流程中,如果用户在支付宝页面支付成功的同时,路飞学城服务器宕机了,用户订单状态未更新,如何解决?(1分)
  8. 简要路飞学城中课程相关的13张表以及相关之间的FK、o2o、m2m 关系(4分)
    注意:使用伪代码表述即可。
  9. 路飞学城表结构查询(10分)
    1. 查看所有学位课并打印学位课名称以及授课老师
    2. 查看所有学位课并打印学位课名称以及学位课的奖学金
    3. 展示所有的专题课
    4. 查看id=1的学位课对应的所有模块名称
    5. 获取id=1的专题课,并打印:课程名、级别(中文)、why_study、what_to_study_brief、所有recommend_courses
    6. 获取id=1的专题课,并打印该课程相关的所有常见问题
    7. 获取id=1的专题课,并打印该课程相关的课程大纲
    8. 获取id=1的专题课,并打印该课程相关的所有章节
    9. 获取id=1的专题课,并打印该课程相关的所有的价格策略
    10. 获取id=1的专题课,并打印该课程相关的所有课时
  10. git相关(8分)
    1. 列举常见的git命令?
    2. git协同开发的流程?
    3. 遇到临时bug怎么办?
    4. 如何划分分支?
    5. 如何做代码review?
    6. git pull 和 git fetch的区别?
    7. git merge 和 git rebase的区别?
    8. 如何给别人的开源项目贡献代码?

第四部分:Linux13分)

  1. 列举Linux常见发行版?(1分)
    1. redhat  ubuntu centos
  2. 如何获取文件 oldboy.log 的末尾两行数据?(1分)
    1. tail -n 2
  3. vim中如何一次删除光标所在行及后面2行?(1分)
    1.   
  4. 如何查看当前网络的网关地址?(1分)
    1. route -n
  5. 如何过滤出文件bb中包含haha关键字的行,并同时显示行号。(1分)
  6. 如何快速清空文件 oldboy.log 。(1分)
  7. 如何用scp把机器10.1.1.4上/tmp/目录下的文件file拉回到本机?(2分)
    提示:用户名root,ssh端口号12345
  8. 如何把文件/root/xxoo的权限配置为:属主可读、可写、可执行的权限,属组及其他用户没有任何权限。(2分)
    注意:使用数字表示权限的方式进行配置
  9. 如何创建用户 alex,并指定用户shell为/sbin/nologin (2分)
    1. useradd -s /sbin/nologin <new username>
  10. 如何删除用户 alex (1分)
    1.   sudo userdel alex

 

第五部分:附加题
提示:此题是面试真题,并且在面试中经常会遇到临时让你来设计的题目,该题各组私下可以进行一起讨论并设计。

posted @ 2018-08-13 17:13  裙下的小香蕉  阅读(579)  评论(2)    收藏  举报