📌  相关文章
📜  NielsenIQ 软件工程师面试经验 |校园 2021(1)

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

NielsenIQ 软件工程师面试经验 | 校园 2021

简介

本文介绍了 NielsenIQ 公司在 2021 年校园招聘中对软件工程师的面试经验。这些面试问题涵盖了编程基础、数据结构、算法和设计模式等方面,对于准备参加 NielsenIQ 软件工程师职位面试的程序员有一定的参考价值。

编程基础
问题 1:请编写一个函数,计算两个整数之和。
def add(x, y):
    return x + y
问题 2:请编写一个函数,判断一个整数是否为偶数。
def is_even(n):
    return n % 2 == 0
数据结构
问题 1:请实现一个栈。
class Stack:
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[-1]

    def is_empty(self):
        return len(self.items) == 0
问题 2:请实现一个队列。
class Queue:
    def __init__(self):
        self.items = []

    def enqueue(self, item):
        self.items.append(item)

    def dequeue(self):
        return self.items.pop(0)

    def is_empty(self):
        return len(self.items) == 0

    def size(self):
        return len(self.items)
算法
问题 1:请写出一个冒泡排序的实现。
def bubble_sort(lst):
    n = len(lst)
    for i in range(n - 1):
        for j in range(n - i - 1):
            if lst[j] > lst[j + 1]:
                lst[j], lst[j + 1] = lst[j + 1], lst[j]
    return lst
问题 2:请写出一个二分查找的实现。
def binary_search(lst, x):
    left, right = 0, len(lst) - 1
    while left <= right:
        mid = (left + right) // 2
        if lst[mid] == x:
            return mid
        elif lst[mid] < x:
            left = mid + 1
        else:
            right = mid - 1
    return -1
设计模式
问题 1:请简要说明工厂模式的原理和作用。

工厂模式的原理是将对象的创建和使用分离开来。工厂类负责创建对象,客户端只需要使用工厂类提供的接口就可以得到一个对象。

工厂模式的作用是使代码更加灵活和可扩展。通过引入工厂类,可以根据需要随时更改对象的实现方式,而不需要修改客户端代码。

问题 2:请简要说明单例模式的原理和作用。

单例模式的原理是确保一个类只有一个实例,并提供一个全局访问点让客户端可以访问这个实例。

单例模式的作用是保证系统中某个类只有一个实例,从而减少了系统开销,同时提供一个全局访问点,简化了代码的调用和管理。