华为Java面试实战:排序与继承解析

需积分: 9 58 下载量 178 浏览量 更新于2024-08-02 收藏 50KB DOC 举报
"华为Java面试题与详细代码,包括编程题和类的执行顺序问题,提供了面试参考和解答示例。" 在华为的Java面试中,面试官可能会考察候选人的编程能力、对语言特性的理解以及对面向对象设计原则的应用。以下是给定文件中的几个典型面试题及其解题思路: 1. **编程题:字符串按逗号分隔并排序** 这个问题要求将输入的以逗号分隔的数字字符串转换为整数数组,并根据用户选择进行升序或降序排序。首先,使用`split()`方法将字符串按逗号分割成一个字符串数组,然后将这些字符串转换为整数,最后进行排序。提供的代码片段中,`splitStringByComma()`函数实现了字符串的分隔,但未包含排序部分。完整的解决方案可以使用`Integer.parseInt()`将字符串转为整数,然后使用`Arrays.sort()`进行排序。 ```java public static int[] stringToIntArray(String source) { String[] strArray = splitStringByComma(source); int[] intArray = new int[strArray.length]; for (int i = 0; i < strArray.length; i++) { intArray[i] = Integer.parseInt(strArray[i]); } Arrays.sort(intArray); // 升序排序 // 如果需要降序排序,可以使用Collections.reverseOrder()作为Comparator return intArray; } ``` 2. **金额转换** 这道题要求将阿拉伯数字的金额转换为中国传统的形式。这涉及到数字到中文字符的映射,以及处理“零”、“整”等特殊字符。解决方案通常需要创建一个映射表,将数字与对应的中文字符关联,同时处理边界情况,例如零和整。 ```java private static final String[] CHINESE_DIGITS = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; private static final String[] CHINESE_UNITS = {"", "十", "百", "千", "万", "十", "百", "千", "亿"}; public static String convertToChineseFormat(double amount) { // 实现细节略,需处理小数点,整数部分和小数部分的转换,以及零和整的特殊情况 } ``` 3. **继承时类的执行顺序** 在Java中,当创建子类对象时,会先调用父类的构造器,然后再执行子类的构造器。给定的代码片段展示了这个过程。当创建`ChildClass`对象时,首先会执行`FatherClass`的构造器,打印出`"FatherClassCreate"`,然后执行`ChildClass`的构造器,打印出`"ChildClassCreate"`。因此,如果在面试中遇到类似的问题,预期的输出将是: ``` FatherClassCreate ChildClassCreate ``` 以上三个问题涵盖了基础的字符串操作、数组排序、类型转换以及面向对象的继承概念,这些都是Java开发者应具备的基本技能。在准备华为的Java面试时,候选人应该熟练掌握这些知识点,并能够灵活应用。