投的时候投的是python开发岗,做完笔试之后hr给打电话,由于实习时间问题,python岗没办法报,hr帮忙改了算法工程师岗,又做了一份算法的笔试题,不知道是不是公司不是特别大的原因,笔试题比较简单。
两次笔试都是满分,周一面试,加油!
开发岗笔试题:
四道题
1.大小写转换(很简单)
将一个字符串中的小写字母转换为大写字母。不是字母的字符不需要做改变。
样例1:
输入:str = "abc"
输出:"ABC"
2.print输出
这个题太简单了,没找到原题,就是写了一个print(f"某句话{变量名}")
没例子
3.判断闰年
请从标准输入流(控制台)中获取一个自然数 year 表示年份。如果 year 是一个闰年,通过 print 语句输出 is a leap year 到标准输出流(控制台)。否则,通过 print 语句输出 not a leap year 到标准输出流(控制台)。
样例3:
当 year = 2008 时,程序执行打印出的结果为:
is a leap year
4.判断IP
给定一个字符串数组lines, 每一个元素代表一个IP地址,找到出现频率最高的IP。
样例4:
输入 = ["192.168.1.1","192.118.2.1","192.168.1.1"]
输出 "192.168.1.1"
答案:
1.
return 字符串名.upper()
2.
看题目
3.
n = int(input())
if n % 4 == 0 and n % 100 != 0 or n % 400 == 0:
print('is a leap year')
else:
print('not a leap year')
4.
class Solution:
"""
@param ipLines: ip address
@return: return highestFrequency ip address
"""
def highestFrequency(self, ipLines):
# Write your code here
ans = ipLines[0]
#使用mapdic记录每个IP出现的次数
mapdic = {}
for ip in ipLines:
if ip in mapdic:
mapdic[ip] += 1
else:
mapdic[ip] = 1
max = 0
#遍历mapdic得到频率最高的IP
for key in mapdic:
if int(mapdic[key]) > max:
max = mapdic[key]
ans = key
return ans
算法岗:
两道题
1.二叉树中序遍历
给出一棵二叉树,返回其中序遍历。
样例 1:
输入:二叉树 = {1,2,3}
输出:[2,1,3]
2.给定一个排序的整数数组(升序)和一个要查找的整数 target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。
样例 2:
输入:数组 = [1,4,4,5,7,7,8,9,9,10],target = 1
输出:0
答案:
1.
"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
"""
class Solution:
"""
@param root: A Tree
@return: Inorder in ArrayList which contains node values.
"""
def inorderTraversal(self, root):
if root is None:
return []
# 创建一个 dummy node,右指针指向 root
# 并放到 stack 里,此时 stack 的栈顶 dummy
# 是 iterator 的当前位置
dummy = TreeNode(0)
dummy.right = root
stack = [dummy]
inorder = []
# 每次将 iterator 挪到下一个点
# 也就是调整 stack 使得栈顶到下一个点
while stack:
node = stack.pop()
if node.right:
node = node.right
while node:
stack.append(node)
node = node.left
if stack:
inorder.append(stack[-1].val)
return inorder
2.
class Solution:
"""
@param nums: The integer array.
@param target: Target to find.
@return: The first position of target. Position starts from 0.
"""
def binarySearch(self, nums, target):
left = 0
right = len(nums) - 1
while left < right:
mid = (left + right) / 2
if nums[mid] >= target:
right = mid
else:
left = mid + 1
if nums[right] == target:
return right
return -1