今天一个公司给我发的几道题目
有些题目没什么思路,哪位大神懂得给我说说?
网络试题
一、JAVA题目
1、用DOM4J解析文件c:\a.xml,并取得所有节点名为“empname”的元素值,去除重复的值后放入ArrayList对象中,写下JAVA代码
2、请按年月日时分秒的格式输出下个月20号的日期,写下JAVA输出代码
二、JAVASCRIPT题目
1、现在需要设计一个60*60的小窗体在1024*768屏幕可见范围内向一个斜线轨迹移动,当小窗体边缘到达屏幕边缘时随机调整一个角度继续以斜线轨迹移动。请你描述以上窗体移动的算法。(只考虑坐标变动,不需要考虑界面设计)
2、JSP页面中的一个文本框中只允许输入大小写字母、数字、“_”、“&”及空格,请用正则表达式写出其验证方法
三、SQL题目
销售模块表结构如下:
销售区域表名:st_salesterritory
序号字段名类型说明
1st_idVarchar2区域ID(主键)
2st_nameVarchar2区域名称
销售客户表名:cl_client
序号字段名类型说明
1cl_idVarchar2客户ID(主键)
2St_idVarchar2所属区域ID(外键,与销售区域表关联)
3cl_nameVarchar2客户名称
销售记录表名:sr_salerecords
序号字段名类型说明
1sr_idVarchar2销售记录ID(主键)
2cl_idVarchar2客户ID(外键,与销售客户表关联)
3Sr_timedate销售时间
4Sr_totalamountnumber销售金额
销售客户汇总表名:sm_saleroom
序号字段名类型说明
1sm_monthVarchar2销售月份,格式为YYYYMM(主键)
2cl_idVarchar2客户ID(主键,与销售客户表关联)
4Sm_totalamountnumber销售金额
按要求写出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()); }}*/
[解决办法]
基本上是没啥难度的题,特别是又不是当场提交,还可以查资料
第一题查下dom4j的api,去重复的话,要简单借助一个Set对象就可以搞定
第二题使用Calendar和SimpleDateFormat就可以
js第一题借助三角函数计算坐标值的变化,唯一一题需要用到些数据知识的题,还是很简单的
js第二题是个简单的正则表达式,注意不要和java的写法搞混就好,/^[a-zA-Z0-9_& ]*$/,大致就这样
sql题需要用到一些数据库函数
第一题用insert into...select... 语句可以搞定,一个简单的分组查询,就是确定上个月的时间需要用到数据库内置的函数,最好能确定下是哪种数据库
第二题用count求销售次数,sum求销售总额,也是个分组查询
第三题在子查询中求各区域销售额,然后对结果按销售额降序排序,取前50个即可,这里具体写法也与数据库有关
[解决办法]
xml的,如果文件格式自定的话就好办。。。
- XML code
<?xml version="1.0" encoding="utf-8"?><root> <empname>1</empname> <empname>2</empname> <empname>3</empname> <empname>4</empname> <empname>5</empname> <empname>1</empname> <empname>2</empname> <empname>3</empname> <empname>4</empname> <empname>5</empname></root>
[解决办法]
下一个月20号
- Java code
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date = new Date(); date.setMonth(date.getMonth()+1); date.setDate(20); String str = sdf.format(date); System.out.println(str);
[解决办法]
窗体移动。。
- JScript code
<html> <body> <div id="test" style="width:60px;height:60px;position:absolute;border:1px solid red;"> </div> <script> var test = document.getElementById("test"); var width = document.body.clientWidth; var height = document.body.clientHeight; var isDown = true; var isRight = true; var x = 0; var y = 0; var speed = 10; var step = 10; function move() { if(isDown) { y += step; if(y >= (height-parseInt(test.style.height))) { isDown = false; } } else { y -= step; if(y <= 0) { isDown = true; } } if(isRight) { x += step; if(x >= (width-parseInt(test.style.width))) { isRight = false; } } else { x -= step; if(x <= 0) { isRight = true; } } test.style.left = x; test.style.top = y; setTimeout(move,speed); } setTimeout(move,speed); window.onresize = function(e) { width = document.body.clientWidth; height = document.body.clientHeight; } </script> </body></html>