腾讯社招笔试加面试

笔试(每题40分钟,不能调试!!!):

  1. 输出:
输入n,输出方阵,
n=5时如下
0   0   0   0   5   
0   0   0   6   4   
0   0   7   14  3
0   8   15  13  2
9   10  11  12  1

n=3时如下
0   0   3
0   4   2
5   6   1

始终调不对,望大佬解决,留下评论。

  1. 大整数减法
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ***************************************************************************
#
# Copyright (c) 2017 ByteDance.com, Inc. All Rights Reserved
#
# *************************************************************************/
#
# @file main.py
#
# @author [email protected]
# @date   2018/5/12
#

num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

# a > b
def string_dec(a, b):
    length = max(len(a), len(b))

    # 1234567
    while (len(a) < length):  # 补位
        a = "0" + a
    # 0056778
    while (len(b) < length):  # 补位
        b = "0" + b

    arr_a = list(a)
    arr_b = list(b)

    i = length - 1
    while (i >= 0):  # 从后到头遍历

        sum = int(arr_a[i]) - int(arr_b[i])
        if sum < 0:  # 小于0,借位
            pos = i - 1
            while (arr_a[pos] == '0'):  # 0 -> 9
                arr_a[pos] == '9'
                pos = pos - 1
            arr_a[pos] = num[int(arr_a[pos]) - 1]
            sum = sum + 10
        else:
            # 大于0,足够减
            pass

        arr_a[i] = num[(sum % 10)]

        i = i - 1

    a = ''.join(arr_a)
    while (len(a) > 1 and a[0] == '0'):  # 去掉前缀0
        a = a[1:]
    return a

if __name__ == '__main__':
    a = '1334567'
    b = '56878'
    c = string_dec(a, b)
    print a,"-",b,"=",c

1面

  1. 工作经历,业务背景。
  2. 算法:如何获取数组最小k个数;数组如何取出两个数,他们的和为指定数值。
  3. 语言:Java HashMap 和ConcurrentHashMap
  4. 计算机网络:流量控制和拥塞控制
  5. 操作系统:select 和epoll 的区别
  6. golang 如何并发

2面

聊项目细节

3面

聊项目细节,多处涉及原理
算法题:一个偶数个元素组成的无序数组,如何挑选出1/2个元素,使得挑选出来的是最内聚的,内聚的定义:最大-最小的差值最小

猜你喜欢

转载自blog.csdn.net/qq_17612199/article/details/80295170