📌  相关文章
📜  光辉网络面试经历 |第二套(研发工程师用)(1)

📅  最后修改于: 2023-12-03 15:36:45.306000             🧑  作者: Mango

光辉网络面试经历 | 第二套(研发工程师用)

概述

本文是我在光辉网络应聘研发工程师时的面试经历总结。这是第二套面试题目,主要考察了我的编程能力和算法思维能力。

题目1
题目描述

写一个函数,返回一个无序整数数组中,找出第三大的数。如果不存在第三大的数,则返回最大的数。

解题思路

首先我们可以将数组从大到小进行排序,然后从第一个元素开始,记录不重复的数的个数。当不重复的数的个数等于3时,返回当前数字即可;否则返回数组的第一个元素。

代码
def third_largest_number(nums):
    nums = list(set(nums))
    nums.sort(reverse=True)
    if len(nums) >= 3:
        return nums[2]
    else:
        return nums[0]
题目2
题目描述

给定一个字符串,写一个函数判断该字符串是否是回文字符串。回文字符串是指正读和反读都相同的字符串。

解题思路

我们可以使用双指针方法进行判断,一个指针从前往后遍历,一个指针从后往前遍历。判断两个指针所指的字符是否相同,如果不同,则该字符串不是回文字符串;如果都遍历完了,则该字符串是回文字符串。

代码
def is_palindrome(s):
    i, j = 0, len(s)-1
    while i < j:
        if s[i] != s[j]:
            return False
        i += 1
        j -= 1
    return True
题目3
题目描述

给定两个字符串s和t,写一个函数判断它们是否是同构字符串。同构字符串是指一个字符串中的字符可以被替换成另一个字符,使得字符串变成另一个字符串。

解题思路

我们可以使用一个字典来存储s和t中每个字符的映射关系。遍历s和t中的每个字符,在字典中查找对应关系,如果没有找到,则添加新的映射关系;如果找到了,但是对应关系不一致,则返回False;如果遍历完了,没有出现不一致的情况,则返回True。

代码
def is_isomorphic(s, t):
    if len(s) != len(t):
        return False
    d = {}
    for i in range(len(s)):
        if s[i] not in d:
            d[s[i]] = t[i]
        elif d[s[i]] != t[i]:
            return False
    return True
总结

本次面试考察了我的编程能力和算法思维能力,让我对自己的不足和优点有了更深刻的认识。通过这次面试,我也学到了很多新的知识和技巧,相信这对我的以后的工作也有很大的帮助。感谢光辉网络给我这次机会,希望能够成为贵司的一员。