旷视科技面试题

FredricZhu · · 311 次点击 · · 开始浏览    

1.Python反转数组的分片,

#coding=utf-8
def reverse_arr():
    arr=[1,2,3,4,5]
    reverse_arr1=[arr[i] for i in range(3,1,-1)]
    print(reverse_arr1)

if __name__ == '__main__':
    reverse_arr()

程序输出如下,


image.png

2.简述decorator的写法。

#coding=utf-8
def decorator_func(func):
    def wrapper(*args,**kwargs):
        print("Before func run")
        func(*args,**kwargs)
        print("After func run")
    return wrapper


@decorator_func
def fun_to_decorator(hehe, nimei = "xixi"):
    print("This is a func to decorator:"+hehe+","+nimei)


if __name__ == '__main__':
    fun_to_decorator("func1", nimei="haha")

程序输出如下,


image.png

3.yield生成器及其作用。

# coding=utf-8


def read_file(fname, block_size=1024*1024):
    f = open(fname)
    while True:
        chunk_data = f.read(block_size)
        if not chunk_data:
            break
        yield chunk_data


if __name__ == '__main__':
    iterator = read_file("D:\\1.txt")
    for block in iterator:
        print(block)

使用此示例前,先用多线程获取海量目录的golang脚本获取当前目录下的所有文件。存到D:\1.txt中,然后,使用Python脚本分块读取文本数据。

4.读取一个目录下的1000万个文件名。
请参考,Golang多线程读取千万级文件目录
https://www.jianshu.com/p/27bc119f0f1f

5.求取数组的最大子串和。
Golang实现,

package main

import (
    "fmt"
)

func maxSubArray(arr []int) int {
    res := arr[0]
    sum := 0
    for i := 0; i < len(arr); i++ {
        if sum > 0 {
            sum += arr[i]
        } else {
            sum = arr[i]
        }

        if res < sum {
            res = sum
        }
    }

    return res
}

func main() {
    arr := make([]int, 0)
    arr = append(arr, -2, 1, -3, 4, -1, 2, 1, -5, 4)
    fmt.Println(maxSubArray(arr))
}

程序输出如下,


image.png

本文来自:简书

感谢作者:FredricZhu

查看原文:旷视科技面试题

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

311 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传