58同城研发工程师笔试题目与解答解析

版权申诉
0 下载量 200 浏览量 更新于2024-09-09 收藏 836KB PDF 举报
58同城2016年的研发工程师笔试题目涵盖了编程基础、算法理解以及数据结构等多个方面。首先,一道编程题考查了对负整数取反的理解。在C语言中,`~i` 表示取i的补码,`-i` 是符号位不变,数值变为其相反数,`1-i` 和 `-1-i` 分别表示i加1和i减1再取反。对于`int i = -2147483648;`,由于i是负的最大有符号整数,取反后得到最大负数,所以`~i`的结果是2147483647。其余选项中,只有D选项的`-1-i` 结果为2147483647,符合预期。 接着是关于后缀表达式的题目,表达式`a+b*c-(d+e)/f` 转换成后缀表达式时,要遵循运算符的优先级规则。该表达式可以逐步转换为`abc*+def/-`,因为先乘除后加减,且括号内先计算。答案是C。 四分位数的概念在统计学中用于描述数据分布的离散程度,给出的数据序列例子中,四分位数的计算步骤清晰地展示了如何根据序列长度和比例确定每个分割点。对于给定的序列`6, 45, 49, 16, 42, 41, 7, 38, 43, 40, 36`,按照公式计算得到的Q1、Q2和Q3分别为16、41和45,答案是B。 深度为5的完全二叉树的节点数与满二叉树相似,但最后一层可能不满。由于第一层有1个节点,每一层比前一层多1个节点,因此最少节点数为`1 + 2 + 2^2 + 2^3 + 2^4 = 15`,答案是B。 二分查找算法在有序列表中查找特定元素时,每次比较将搜索范围缩小一半。在有序表`5, 8, 36, 48, 50, 58, 88`中查找58,第一次比较就可以确定目标在中间,共需比较2次,判定树高度为2,答案是B。 至于三维数组的内存地址计算,给定`A[0][0][0]`的地址为1100,且每元素占2个存储单元,数组的索引是从0开始的。对于`A[4][3][2]`,其在行优先存储方式下,地址计算方法是逐层加上对应的索引乘以元素大小的累加值。所以地址为`1100 + (4 * 6 * 2) + (3 * 2) + 2 = 1100 + 48 + 6 + 2 = 1150`,答案是A。 总结起来,这份文档包含了58同城2016年笔试题目的精华部分,涉及到了编程基础、算术运算、数据结构(如二叉树和数组)、算法(如后缀表达式和二分查找)以及统计学中的四分位数概念。这些题目旨在测试应聘者的编程技能、逻辑思维以及对常见数据结构和算法的理解。