`
zhouyuming
  • 浏览: 4250 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

高级游戏开发工程师测试题

阅读更多
要求:代码要求能够直接编译运行
1. 实现一个函数:凑14;输入很多个整数(1<=数值<=13),任意两个数相加等于14就可以从数组中删除这两个数,求剩余数(按由小到大排列);
比如: 输入数组[9,1,9,7,5,13], 输出数组[7,9]
2. 实现一个函数:线段重叠; 输入多个一维线段,求出这些线段相交的所有区域(也用线段表示);  一条线段用两个值表示(x0,x1), 其中x1>x0; 
比如: 输入线段数组[(2,4),(1.5,6),(0.5,3.5),(5,7),(7.5,9)], 输出线段数组[(1.5,4),(5,6)]
3. 实现一个函数:最长顺子;输入很多个整数(1<=数值<=13),返回其中可能组成的最长的一个顺子(顺子中数的个数代表顺的长度); 其中数字1也可以代表14; 顺子包括单顺\双顺\3顺;单顺的定义是连续5个及以上连续的数,比如1,2,3,4,5、3,4,5,6,7,8和10,11,12,13,1等;双顺的定义是连续3个及以上连续的对(对:两个相同的数被称为对),比如1,1,2,2,3,3、4,4,5,5,6,6,7,7和11,11,12,12,13,13,1,1等;3顺的定义是连续2个及以上连续的3张(3张:3个相同的数被称为3张),比如1,1,1,2,2,2、3,3,3,4,4,4,5,5,5,6,6,6和13,13,13,1,1,1等等;
比如:输入数组[1,5,2,3,4,4,5,9,6,7,2,3,3,4], 输出数组[2,2,3,3,4,4,5,5]
4. 设计一个程序:使用多线程,统计程序源代码行数;源代码是可以编译通过的合法的代码,统计其物理总行数、其中的空行行数、其中含有有效代码的行数、其中含有注释内容的行数;(要求必须利用多线程编程,如果代码框架能更容易的扩展到支持多种语言的源代码行数统计,将获得更高的评价。)


第二题
package com.huawei.oms.pm.ui.test;

public class Point {
    double x;
    double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    /**
     * @return 返回 x
     */
    public double getX() {
        return x;
    }

    /**
     * @param 对x进行赋值
     */
    public void setX(double x) {
        this.x = x;
    }

    /**
     * @return 返回 y
     */
    public double getY() {
        return y;
    }

    /**
     * @param 对y进行赋值
     */
    public void setY(double y) {
        this.y = y;
    }

}




分享到:
评论
4 楼 zhouyuming 2011-03-31  
Question 1:

package test;

import java.util.Arrays;

public class GameOne {
    public static void main(String[] args) {
        int[] temp = { 7, 7, 5, 9, 3 };
        Arrays.sort(temp);
        temp = catchGame(temp, 14);
        for (int i : temp) {
            System.out.print(i + ",");
        }
    }

    public static int[] catchGame(int[] sum, int catchNumber) {
        for (int i = 0; i < sum.length; i++) {
            for (int j = i + 1; j < sum.length; j++) {
                if (j == i)
                    continue;
                if (catchNumber == sum[i] + sum[j]) {
                    int numMovedMax = sum.length - (i > j ? i : j) - 1;
                    if (numMovedMax > 0)
                        System.arraycopy(sum, (i > j ? i : j) + 1, sum,
                                i > j ? i : j, numMovedMax);

                    int numMovedMin = sum.length - (i > j ? j : i) - 1;
                    if (numMovedMin > 0)
                        System.arraycopy(sum, (i > j ? j : i) + 1, sum,
                                (i > j ? j : i), numMovedMin);
                    sum = catchGame(Arrays.copyOf(sum, sum.length - 2),
                            catchNumber);
                    continue;
                }
            }
        }
        return sum;

    }

    public static int[] catchNumGame(int[] sum, int catchNumber) {
        int del = -1;

        if (del != -1) {
            if (del != sum.length - 1)
                System.arraycopy(sum, del + 1, sum, del, sum.length - del - 1);
            System.arraycopy(sum, 1, sum, 0, sum.length - 1);
            return catchNumGame(Arrays.copyOf(sum, sum.length - 2), catchNumber);
        } else {

            return sum;
        }
    }
}

3 楼 zhouyuming 2011-03-19  
package com.huawei.oms.pm.ui.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Test {
    private static List<Point> plist = new ArrayList<Point>();
    private static Map<String, List<Point>> maps = new HashMap<String, List<Point>>();
    private static Set<String> results = new HashSet<String>();

    public static void main(String[] args) {
        init();
        getGroup();
        filterArray();
        getResult();

        for (String str : results) {
            System.out.println(str);
        }
    }

    public static void getResult() {
        for (String key : maps.keySet()) {
            List<Point> list1 = maps.get(key);
            results.add(getPoint(list1));
        }
    }

    public static void filterArray() {
        Set<String> keySet = new HashSet<String>();
        for (String key : maps.keySet()) {
            List<Point> list1 = maps.get(key);
            Double[] value = getMaxAndMin(list1);
            for (String key2 : maps.keySet()) {
                if (key.equals(key2)) {
                    continue;
                }
                List<Point> list2 = maps.get(key2);
                Double[] value2 = getMaxAndMin(list2);
                if (value[0] <= value2[0] && value[1] >= value2[1]) {
                    keySet.add(key2);
                }
            }
        }

        for (String str : keySet) {
            maps.remove(str);
        }
    }

    public static Double[] getMaxAndMin(List<Point> list) {
        Double[] doubles = new Double[2];
        Double min = null;
        Double max = null;
        for (Point point : list) {
            if (min == null || min > point.x) {
                min = point.x;
            }
            if (max == null || max < point.y) {
                max = point.y;
            }
        }
        doubles[0] = min;
        doubles[1] = max;
        return doubles;
    }

    public static String getPoint(List<Point> list) {
        Double[] mins = new Double[list.size()];
        Double[] maxs = new Double[list.size()];
        for (int i = 0; i < list.size(); i++) {
            mins[i] = list.get(i).getX();
            maxs[i] = list.get(i).getY();
        }
        Arrays.sort(mins);
        Arrays.sort(maxs);
        return "(" + mins[1] + "," + maxs[maxs.length - 2] + ")";
    }
2 楼 zhouyuming 2011-03-19  

    public static void getGroup() {
        // (2,4),(1.5,6),(0.5,3.5),(5,7),(7.5,9)]
        // [(1.5,4),(5,6)]
        for (int i = 0; i < plist.size(); i++) {
            List<Point> list = new ArrayList<Point>();
            Point previou = plist.get(i);
            list.add(previou);
            for (int j = 0; j < plist.size(); j++) {
                Point next = plist.get(j);
                if (previou.y < next.y && previou.y > next.x) {
                    list.add(next);
                }
            }
            if (list.size() > 1) {
                maps.put("group" + i, list);
            }
        }
    }

    public static void init() {
        Point point1 = new Point(2, 4);
        Point point2 = new Point(1.5, 6);
        Point point3 = new Point(0.5, 3.5);
        Point point4 = new Point(5, 7);
        Point point5 = new Point(7.5, 9);

        plist.add(point1);
        plist.add(point2);
        plist.add(point3);
        plist.add(point4);
        plist.add(point5);

    }
}
1 楼 zhouyuming 2011-03-19  
第二题:
package com.huawei.oms.pm.ui.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {
    static int[] cards = new int[] { 1, 5, 2, 3, 4, 4, 5, 9, 6, 7, 2, 3, 3, 4 };

    public static void main(String[] args) {
        Arrays.sort(cards);
        // 顺子
        List<Integer> result = getResult(0, 5);
        for (Integer integer : result) {
            System.out.print(integer);
        }
        System.out.println();

        // 连队
        List<Integer> result1 = getResult(1, 4);
        for (Integer integer : result1) {
            System.out.print(integer);
        }
        System.out.println();
        // 飞机
        List<Integer> result2 = getResult(2, 6);
        for (Integer integer : result2) {
            System.out.print(integer);
        }
        System.out.println();
    }

    private static List<Integer> getResult(int order, int size) {
        List<Integer> list = new ArrayList<Integer>();
        for (int i = 0; i < cards.length; i++) {
            if (order == 0) {
                if (i < cards.length - 1 && cards[i] < cards[i + 1]) {
                    list.add(cards[i]);
                }
                continue;
            } else {
                if (i > order && cards[i] == cards[i - order]) {
                    continue;
                }
                if (cards.length >= i + 1 + order
                        && cards[i] == cards[i + order]) {
                    int j = i;
                    for (; j <= i + order; j++) {
                        list.add(cards[j]);
                    }
                    i = j - 1;
                    continue;
                }
            }
            if (list.size() < size) {
                list = new ArrayList<Integer>();
            }
        }
        return list;
    }
}

相关推荐

    测试工程师必备的面试题

    "测试工程师必备的面试题" 本文将对软件测试基础知识进行详细的解释,涵盖了软件测试的定义、目的、目标、缺陷、黑盒测试、等价类划分、边界值分析、决策分析法、因果图分析法、测试用例设计、软件生命周期、软件...

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    广州传智播客JavaEE工程师测试题(带答案的).doc 应聘时最漂亮的回答.docx 当面试官问「你有什么要问我的吗」时,应该问什么?.docx 提高 Java 代码性能的各种技巧.docx 搜狗商业平台Java技术实践.docx 最新JAVA...

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    广州传智播客JavaEE工程师测试题(带答案的).doc 应聘时最漂亮的回答.docx 当面试官问「你有什么要问我的吗」时,应该问什么?.docx 提高 Java 代码性能的各种技巧.docx 搜狗商业平台Java技术实践.docx 最新JAVA...

    【藏宝图】(珍藏版)2012java开发工程师必备精品资料(115)

    综上所述,这些精品资料不仅覆盖了Java开发的基础知识,还包括了许多高级主题和技术实践,对于Java开发工程师来说是非常宝贵的资源。通过学习这些资料,开发者不仅可以提升自己的技术能力,还能更好地应对实际工作中...

    java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB.zip

    广州传智播客JavaEE工程师测试题(带答案的).doc 应聘时最漂亮的回答.docx 当面试官问「你有什么要问我的吗」时,应该问什么?.docx 提高 Java 代码性能的各种技巧.docx 搜狗商业平台Java技术实践.docx 最新JAVA...

    J2ME中高级面试题

    **J2ME中高级面试题详解** 在移动设备开发领域,Java 2 Micro Edition (J2ME) 是一种广泛使用的平台,尤其适用于嵌入式系统和早期的智能手机。对于那些致力于成为高级工程师或架构师的开发者来说,深入理解J2ME技术...

    2018蓝桥杯VIP题-组合公式运算的部分测试数据

    资源描述:【项目资源】:汇聚了云计算、区块链、网络安全、前端设计、后端架构、UI/UX设计、游戏开发、移动应用开发、虚拟现实(VR)、增强现实(AR)、3D建模与渲染、云计算服务、网络安全工具等各类技术项目的...

    沙盘运行器

    C++/C# 软件开发工程师 月薪15000 技术总监- 武汉 月薪30000 android 开发工程师 月薪20000 高级算法工程师 月薪30000 地图导航上市公司 产品经理 月薪20000 【上海斐讯数据】招聘JAVA工程师 【德邦物流】高薪诚聘 ...

    北大青鸟S2 C#上机题(4)ACCP4.0

    C#语言广泛应用于Windows桌面应用程序、游戏开发(尤其是Unity游戏引擎)、Web应用以及服务端开发等领域。掌握C#语言不仅可以提升个人的编程能力,还能为进入IT行业打下坚实的基础。 ### 知识点三:ACCP4.0课程体系...

    软件工程师找工作150问

    - **重要性**:游戏开发是计算机图形学和人工智能的重要应用领域。 - **核心知识点**: - 游戏物理引擎的工作原理:碰撞检测、刚体模拟等。 - 图形渲染技术:光照模型、纹理映射等。 - AI 技术在游戏中的应用:...

    最新各IT公司互联网BAT谷歌微软等笔试面试真题复习资料

    腾讯则倾向于考察游戏开发、音视频技术等领域的技能。这些公司在面试时,不仅看重你的专业技能,还会评估你的逻辑思维、问题解决能力和团队协作精神。 接下来是谷歌和微软,这两家全球知名的科技巨头同样对候选人的...

    华为机试题-内涵多个算法解决实际问题

    资源描述:【项目资源】:汇聚了云计算、区块链、网络安全、前端设计、后端架构、UI/UX设计、游戏开发、移动应用开发、虚拟现实(VR)、增强现实(AR)、3D建模与渲染、云计算服务、网络安全工具等各类技术项目的...

    C++笔试题.doc

    C++是一种广泛应用于系统软件、应用软件、游戏开发、嵌入式系统以及高性能计算等多个领域的编程语言。在C++笔试题中,考生通常会被要求解决各种各样的问题,以检验其对C++语法、概念、设计模式以及算法的掌握程度。...

    吴恩达-深度学习-课后作业-答案与总结

    资源描述:【项目资源】:汇聚了云计算、区块链、网络安全、前端设计、后端架构、UI/UX设计、游戏开发、移动应用开发、虚拟现实(VR)、增强现实(AR)、3D建模与渲染、云计算服务、网络安全工具等各类技术项目的...

    威盛面试题

    掌握脾形曲线和B样条的原理有助于在游戏开发、动画制作和CAD/CAM系统中实现高质量的图形渲染。 ### 11. C++模板与IEEE标准 C++模板允许程序员创建参数化的类型,即可以为不同类型的数据创建通用代码。理解模板的...

    C# Accp5.0 第八章课后答案

    C#是一种由微软开发的面向对象的编程语言,广泛应用于Windows平台上的应用程序开发,游戏开发,以及Web服务等。 第八章的内容可能涉及C#语言的核心概念或特定主题,如类和对象、继承、多态、接口、异常处理、文件和...

    前端、vue、react、js面试题

    以上内容仅涵盖了一部分前端面试可能涉及的知识点,深入学习还包括CSS布局、JavaScript高级特性、前端框架原理、性能优化、网络优化、测试与调试等方面。对于前端工程师来说,不断学习和提升技术能力至关重要。

Global site tag (gtag.js) - Google Analytics