阅读 56925 次
发表时间: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还招人不。。三年写递归妥妥的。。
Global site tag (gtag.js) - Google Analytics