发表时间:2012-08-30
montya 写道 lz招项目经理,还是技术经理?
"7000以下已经找不到一个会写递归的程序员了" 看评论和标题,招人的目的含糊,其实就是想招个能干活的(啥活都可以的) |
|
发表时间:2012-08-31
还没毕业的时候就已经很熟练了。
|
|
发表时间:2012-08-31
四书五经 写道 marcolee 写道 BloodyCoder 写道 第二题没看懂你要干嘛
应该考的是递归, oracle的:select * from table connect by prior id=pid start with id=xx 正解。7000是你的了 确实正解。平时就是这么在构造多层次栏目数据 db2的话没有 connect 函数。 都用的with子句构造的。 WITH n(id, pid) AS ( SELECT id, pid FROM table WHERE parent_id = '-1' UNION ALL SELECT temp.id, temp.pid FROM table as temp, n WHERE n.id = temp.pid ) select * from n; 请测试。另外我想说。你的面试题毫无意义,根本面试不出任何东西来。 这sql我会写,但是我不会背,得查老的代码才能具体想起来。 connect函数我知道我但是会忘记具体怎么用。 如果我面试你的公司 你提问这种问题。我只会说个大概。 但是你能说我不会么? 你们如果不是做se的。最好还是多问问中间件相关的知识比较专业。 找项目经理?让他拿出来以前演示系统用的ppt看一看就够了。 之前公司招了一个项目经理,演示系统要做ppt。我看着他别扭的打字速度还有ppt切换,就知道他肯定没做过项目经理的工作了。。。 |
|
发表时间:2012-08-31
leonayx123 写道 四书五经 写道 marcolee 写道 BloodyCoder 写道 第二题没看懂你要干嘛
应该考的是递归, oracle的:select * from table connect by prior id=pid start with id=xx 正解。7000是你的了 确实正解。平时就是这么在构造多层次栏目数据 db2的话没有 connect 函数。 都用的with子句构造的。 WITH n(id, pid) AS ( SELECT id, pid FROM table WHERE parent_id = '-1' UNION ALL SELECT temp.id, temp.pid FROM table as temp, n WHERE n.id = temp.pid ) select * from n; 请测试。另外我想说。你的面试题毫无意义,根本面试不出任何东西来。 这sql我会写,但是我不会背,得查老的代码才能具体想起来。 connect函数我知道我但是会忘记具体怎么用。 如果我面试你的公司 你提问这种问题。我只会说个大概。 但是你能说我不会么? 你们如果不是做se的。最好还是多问问中间件相关的知识比较专业。 找项目经理?让他拿出来以前演示系统用的ppt看一看就够了。 之前公司招了一个项目经理,演示系统要做ppt。我看着他别扭的打字速度还有ppt切换,就知道他肯定没做过项目经理的工作了。。。 问题是那个面试者连个大概都说不出来。 再有LZ 也没要求用单条sql解决这问题。 而且你的sql不满足需求啊。 你只是把这课树取出来了没打印成树型。 |
|
发表时间:2012-09-01
我想思路才是最重要的~~~~现在的年轻人多喜欢拿来直接就用,这些东东混过来的大学生一般都不懂
|
|
发表时间:2012-09-03
// 组成树状菜单
private void AddTcscMenuList(MenuListItem rootMenu,String strPre,String type) { if("2".equals(type)) { ArrayList<String> lstIDName; Entry<String, String> keyValue; int iSize = rootMenu.lstSubMenu.size(); int iIndex=1; for(MenuListItem menuItem:rootMenu.lstSubMenu) { lstIDName = new ArrayList<String>(); lstIDName.add(menuItem.strMenuID); //tcsc_HrDocMenuList1.add("0",""); if(iIndex==iSize) { lstIDName.add(strPre+"└" + menuItem.nowMenu.getDocMenuName()+"┳"+strPre+"└" + menuItem.nowMenu.getDocMenuName_en()); tcsc_HrDocMenuList.add(lstIDName); //keyValue = new MyEntry(menuItem.nowMenu.getDocDisplayType().trim()+";"+menuItem.strMenuID, strPre+"└" + menuItem.nowMenu.getDocMenuName().trim()); keyValue = new MyEntry(menuItem.strMenuID, strPre+"└" + menuItem.nowMenu.getDocMenuName().trim()+"┳"+strPre+"└" + menuItem.nowMenu.getDocMenuName_en().trim()); tcsc_HrDocMenuList1.add(keyValue); AddTcscMenuList(menuItem,strPre+" ","2"); } else { iIndex++; lstIDName.add(strPre+"├" + menuItem.nowMenu.getDocMenuName()+"┳"+strPre+"├" + menuItem.nowMenu.getDocMenuName_en()); tcsc_HrDocMenuList.add(lstIDName); //keyValue = new MyEntry(menuItem.nowMenu.getDocDisplayType().trim()+";"+menuItem.strMenuID, strPre+"├" + menuItem.nowMenu.getDocMenuName().trim()); keyValue = new MyEntry(menuItem.strMenuID, strPre+"├" + menuItem.nowMenu.getDocMenuName()+"┳"+strPre+"├" + menuItem.nowMenu.getDocMenuName_en()); tcsc_HrDocMenuList1.add(keyValue); AddTcscMenuList(menuItem,strPre+"│ ","2"); } } }else { ArrayList<String> lstIDName; Entry<String, String> keyValue; int iSize = rootMenu.lstSubMenu.size(); int iIndex=1; for(MenuListItem menuItem:rootMenu.lstSubMenu) { lstIDName = new ArrayList<String>(); lstIDName.add(menuItem.strMenuID); //tcsc_HrDocMenuList1.add("0",""); if(iIndex==iSize) { lstIDName.add(strPre+"└" + menuItem.nowMenu.getDocMenuName()+"┳"+strPre+"├" + menuItem.nowMenu.getDocMenuName_en()); tcsc_TechDocMenuList.add(lstIDName); //keyValue = new MyEntry(menuItem.nowMenu.getDocDisplayType().trim()+";"+menuItem.strMenuID, strPre+"└" + menuItem.nowMenu.getDocMenuName().trim()); keyValue = new MyEntry(menuItem.strMenuID, strPre+"└" + menuItem.nowMenu.getDocMenuName().trim()+"┳"+strPre+"└" + menuItem.nowMenu.getDocMenuName_en().trim()); tcsc_TechDocMenuList1.add(keyValue); AddTcscMenuList(menuItem,strPre+" ","1"); } else { iIndex++; lstIDName.add(strPre+"├" + menuItem.nowMenu.getDocMenuName()+"┳"+strPre+"├" + menuItem.nowMenu.getDocMenuName_en()); tcsc_TechDocMenuList.add(lstIDName); //keyValue = new MyEntry(menuItem.nowMenu.getDocDisplayType().trim()+";"+menuItem.strMenuID, strPre+"├" + menuItem.nowMenu.getDocMenuName().trim()); keyValue = new MyEntry(menuItem.strMenuID, strPre+"├" + menuItem.nowMenu.getDocMenuName()+"┳"+strPre+"└" + menuItem.nowMenu.getDocMenuName_en()); tcsc_TechDocMenuList1.add(keyValue); AddTcscMenuList(menuItem,strPre+"│ ","1"); } } } } |
|
发表时间:2012-09-03
现在物价涨的太快了。
|
|
发表时间:2012-09-03
no1dog 写道 其实我觉得,数结构那么存是自己给自己找麻烦,为何不用
001 001001 001001001 001001002这种方式来存储。 比如我现在要某个节点下的数据,可以直接 like "001001%" 遍历到底效率不高的 现在一般都有cache....发起数据库查询就已经慢了。 |
|
发表时间:2012-09-03
考个B+,岂不要好几万了?
|
|
发表时间:2012-09-03
icefishc 写道 leonayx123 写道 四书五经 写道 marcolee 写道 BloodyCoder 写道 第二题没看懂你要干嘛
应该考的是递归, oracle的:select * from table connect by prior id=pid start with id=xx 正解。7000是你的了 确实正解。平时就是这么在构造多层次栏目数据 db2的话没有 connect 函数。 都用的with子句构造的。 WITH n(id, pid) AS ( SELECT id, pid FROM table WHERE parent_id = '-1' UNION ALL SELECT temp.id, temp.pid FROM table as temp, n WHERE n.id = temp.pid ) select * from n; 请测试。另外我想说。你的面试题毫无意义,根本面试不出任何东西来。 这sql我会写,但是我不会背,得查老的代码才能具体想起来。 connect函数我知道我但是会忘记具体怎么用。 如果我面试你的公司 你提问这种问题。我只会说个大概。 但是你能说我不会么? 你们如果不是做se的。最好还是多问问中间件相关的知识比较专业。 找项目经理?让他拿出来以前演示系统用的ppt看一看就够了。 之前公司招了一个项目经理,演示系统要做ppt。我看着他别扭的打字速度还有ppt切换,就知道他肯定没做过项目经理的工作了。。。 问题是那个面试者连个大概都说不出来。 再有LZ 也没要求用单条sql解决这问题。 而且你的sql不满足需求啊。 你只是把这课树取出来了没打印成树型。 打印啊。。那还是得递归一条条根据父id去取。我是看到楼主说 有人connect函数那么写给正解,给出的一个with对connect替代写法。 如果要打印树形结构。改造一下sql。 WITH n(id, pid,path) AS ( SELECT id, pid ,'/'||t1.id as path FROM table t1 WHERE parent_id = '-1' UNION ALL SELECT temp.id, temp.pid, n.path||'/'temp.id as path FROM table as temp, n WHERE n.id = temp.pid ) select * from n order by path; path 就是需要的树形结构,用"/"把id拼成了一个结构。可以根据id去like。 这么一看。。。额。。。还是个递归,而且没有停止条件。。还是不要用了。。。 我现在只有6500.。。lz还招人不。。三年写递归妥妥的。。 |