📜  Nagarro 面试经历 |第 10 套(软件开发人员新手)(1)

📅  最后修改于: 2023-12-03 14:44:32.517000             🧑  作者: Mango

Nagarro 面试经历 | 第10套 (软件开发人员新手)

概述

本篇面试经历是针对软件开发人员新手的面试题目,主要关注应聘者对编程基础知识的掌握及应对问题的思考能力。

该面试包含以下内容:

  1. 算法问题
  2. 编程语言问题
  3. 常见计算机科学问题
算法问题
题目1

给定一个数组arr[],请你找出数组中出现次数最多的数字,并返回它的出现次数。

例如:

arr = [1, 2, 3, 4, 4, 4, 4] 输出:4

arr = [1, 2, 2, 3, 3, 3, 4, 4] 输出:3

解答1
def most_frequent(arr):
    counts = {}
    for i in arr:
        if i not in counts:
            counts[i] = 1
        else:
            counts[i] += 1
    return max(counts.values())

print(most_frequent([1, 2, 3, 4, 4, 4, 4]))
print(most_frequent([1, 2, 2, 3, 3, 3, 4, 4]))
题目2

给定一个字符串,请你找出其中不含重复字符的最长子串,返回它的长度。

例如:

s = 'abcabcbb' 输出:3

s = 'bbbbbb' 输出:1

解答2
def length_of_longest_substring(s):
    chars = set()
    i, j, max_len = 0, 0, 0
    while j < len(s):
        if s[j] not in chars:
            chars.add(s[j])
            j += 1
            max_len = max(max_len, len(chars))
        else:
            chars.remove(s[i])
            i += 1
    return max_len

print(length_of_longest_substring('abcabcbb'))
print(length_of_longest_substring('bbbbbb'))
编程语言问题
题目3

请解释一下 Python 中的装饰器是什么?

解答3

装饰器是 Python 中的高级特性,它可以在函数或类上面引用额外的功能,而无需修改原来的代码。装饰器利用了 Python 的闭包(closure)特性,可以动态地修改函数的行为。比如,可以用装饰器在函数执行前后打印时间戳、记录日志,或者实现缓存等。

下面是一个装饰器的例子,它可以在执行函数之前和之后打印当前时间。

import time

def timer(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f'{func.__name__} took {end_time - start_time:.8f} seconds')
        return result
    return wrapper

@timer
def my_function():
    time.sleep(1)  # 模拟函数执行的时间
题目4

请解释一下 Python 中的生成器是什么?

解答4

生成器是 Python 中一种用于迭代的特殊对象,它比列表等容器更加轻量级,可以节约内存空间。生成器可以用于生成大量的数据,而无需将它们全部存储在内存中。生成器的一个典型用途是创建无限序列,如斐波那契数列。

下面是一个生成器的例子,它可以生成前 n 个斐波那契数列。

def fibonacci(n):
    a, b = 1, 1
    for i in range(n):
        yield a
        a, b = b, a + b

for i in fibonacci(10):
    print(i)
常见计算机科学问题
题目5

请解释一下什么是操作系统?

解答5

操作系统是计算机系统中的一个软件层,它负责管理计算机系统的各种资源,如 CPU、内存、硬盘、输入输出设备等。操作系统提供了一种抽象化的方式,使得应用程序可以不用考虑底层硬件细节而直接使用系统提供的功能。

操作系统有很多种不同的类型,如 Windows、Linux、macOS 等。不同的操作系统有各自的特点和优点,可以根据应用场景的不同选择合适的操作系统。

题目6

请解释一下什么是网络协议?

解答6

网络协议指的是在计算机网络中进行通信所采用的标准化规范。网络协议的主要作用是定义了网络中数据传输的格式、顺序以及各个节点的交互方式。网络协议可以让不同的计算机系统、设备和应用程序之间可以互相通信,从而实现数据的传输和共享。

常见的网络协议包括 HTTP、FTP、SMTP、POP3、TCP、UDP 等。每种网络协议都有其独特的特点和优缺点,应用程序可以根据实际需求选择使用合适的协议。