日期:2014-05-20  浏览次数:21058 次

今天一个公司给我发的几道题目
有些题目没什么思路,哪位大神懂得给我说说?


网络试题
一、 JAVA题目
1、 用DOM4J解析文件c:\a.xml,并取得所有节点名为“empname”的元素值,去除重复的值后放入ArrayList对象中,写下JAVA代码















2、 请按年月日时分秒的格式输出下个月20号的日期,写下JAVA输出代码









二、 JAVASCRIPT题目
1、 现在需要设计一个60*60的小窗体在1024*768屏幕可见范围内向一个斜线轨迹移动,当小窗体边缘到达屏幕边缘时随机调整一个角度继续以斜线轨迹移动。请你描述以上窗体移动的算法。(只考虑坐标变动,不需要考虑界面设计) 
















2、 JSP页面中的一个文本框中只允许输入大小写字母、数字、“_”、“&”及空格,请用正则表达式写出其验证方法









三、 SQL题目
销售模块表结构如下:

销售区域表名:st_salesterritory
序号 字段名 类型 说明
1 st_id Varchar2 区域ID(主键)
2 st_name Varchar2 区域名称


销售客户表名:cl_client
序号 字段名 类型 说明
1 cl_id Varchar2 客户ID(主键)
2 St_id Varchar2 所属区域ID(外键,与销售区域表关联)
3 cl_name Varchar2 客户名称

销售记录表名:sr_salerecords
序号 字段名 类型 说明
1 sr_id Varchar2 销售记录ID(主键)
2 cl_id Varchar2 客户ID(外键,与销售客户表关联)
3 Sr_time date 销售时间
4 Sr_totalamount number 销售金额

销售客户汇总表名:sm_saleroom
序号 字段名 类型 说明
1 sm_month Varchar2 销售月份,格式为YYYYMM(主键)
2 cl_id Varchar2 客户ID(主键,与销售客户表关联)
4 Sm_totalamount number 销售金额

按要求写出SQL:
1. 将上月各客户的销售金额汇总后记录到销售客户汇总表(sm_saleroom)中







2. 统计本月各客户的销售次数及销售总额,输出格式如下:
销售次数 销售总额







3. 统计各销售区域本年度的销售额,并按销售额从大到小提取前50名。输出格式如下:
名次 区域名称 销售额



------解决方案--------------------
Java code

class BounceFrame extends JFrame {
    private BallCanvas canvas;

    public BounceFrame() {
        setSize(600, 500);
        setTitle("Bounce Ball");
        Container contentPane = getContentPane();
        canvas = new BallCanvas();
        contentPane.add(canvas, BorderLayout.CENTER); // add canvas to teh
                                                        // container of frame

        JPanel buttonPanel = new JPanel();

        addButton(buttonPanel, "Start", new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                addBall(); // call method
            }
        });

        addButton(buttonPanel, "Close", new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                System.exit(0);
            }
        });

        contentPane.add(buttonPanel, BorderLayout.SOUTH);
    }

    public void addButton(Container c, String title, ActionListener listener) {
        JButton button = new JButton(title);
        c.add(button); // add button to panel
        button.addActionListener(listener);
    }

    public void addBall() {
        // try{
        Ball b = new Ball(canvas);
        canvas.add(b); // add ball to canvas
        for (int i = 1; i <= 1000; i++) {
            b.move();
            // main()单线程运行,无法每次move()后,sleep()等一会儿,减慢速度。只有想别的办法,比如改变步长。但立即会有一蹿一蹿的跳跃感。
            
            
            for (int t = 0; t < 100; t++) { // 只有:每次move()一个小步长,然后for()空循环耗去一段时间。
                System.out.println();
            }
            
            
                try {
                    Thread.currentThread().sleep(5);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }    //main()也是一个线程。一样可以用线程操控的招。
            
            // 还可以:Timer(),用定时器,每次xxx毫秒后,触发事件处理器,事件处理方法中.move();
        }
        // }
        // catch (InterruptedException e) {}
    }
}

class BallCanvas extends JPanel {
    private ArrayList balls = new ArrayList();

    public void add(Ball b) {
        balls.add(b); // add to list
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        for (int i = 0; i < balls.size(); i++) {
            Ball b = (Ball) balls.get(i);
            b.draw(g2);
        }
    }

}

class Ball {
    private Component canvas;

    private int x = 0;

    private int y = 0;

    private int dx = 2; // 小球每次移动步长。循环----调用.move()----x=x+dx;

    private int dy = 2; // 因为是单线程,独占cpu,所以跑得快。

    public Ball(Component c) {
        canvas = c;
    }

    public void draw(Graphics2D g2) {
        g2.fill(new Ellipse2D.Double(x, y, 15, 15));
    }

    public void move() {
        x += dx;
        y += dy;
        if (x < 0) {
            x = 0;
            dx = -dx;
        }
        if (x + 15 >= canvas.getWidth()) {
            x = canvas.getWidth() - 15;
            dx = -dx;
        }
        if (y < 0) {
            y = 0;
            dy = -dy;
        }
        if (y + 15 >= canvas.getHeight()) {
            y = canvas.getHeight() - 15;
            dy = -dy;
        }
        canvas.paint(canvas.getGraphics());
    }

}
*/