面试题
公司名不说了。 第二题思路:
对于每个qq,判断qq的前缀和后缀。树的长度从0 - strlen/2
如4323254
索引0开始的:
1位前缀:4,后缀3 不等
2位前缀:43 后缀23 不等
3位前缀的:432后缀325 不等
。。。
索引1开始的:
2前缀32 后缀32相等
计算长度最大的即可
$qqNs = array("4323254","22222","5123123","23412341234","2222222");$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";foreach($qqNs as $tmp){ $max = 1; $qq = $tmp; while($qq){ for($i=1,$n = floor((strlen($qq)/2));$i <= $n;$i++){ $preTree = substr($qq, 0, $i); $postTree = substr($qq,$i,$i); if($preTree == $postTree){ if($i>=$max){ $max = $i; } } } $qq = substr($qq,1); } echo $tmp.": ".substr($str,0,$max)."<br/>";
4323254: AB22222: AB5123123: ABC23412341234: ABCD2222222: ABC
第二题
如果不是考算法,也可以简单的用正则反向引用:
$qqNs = array("4323254","22222","5123123","23412341234","2222222");$preg = "/(\d+)(\\1)/";foreach($qqNs as $qq){ if(preg_match($preg,$qq,$res)){ echo $qq.":".substr($str,0,strlen($res[1]))."<br/>"; }}
感谢楼上!!看了你的思路瞬间懂了!
1 索引从1开始,与索引0的做比较,如果相同,匹配向量自增。
2 拿索引0和索引1相连。与索引2与索引3相连的值进行比较,如果相等,匹配向量再自增。
3 如此循环下去到整个QQ号字符串的一半。得到最大自增向量。
最后从字符串数组的头部出栈,再按上述流程计算一遍。。。
不知各位还有其他算法吗?
嗯,当时第一反应就是正则,不过考虑到他出这题应该是考算法。确实没想出来。
不至于吧?全是基础题,不要自己为难自己
一、
$ar = range(1, 54);shuffle($ar);print_r($ar);
$qq = array('4323254', '5723723');$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');$r = array('ABAB $0', 'ABCABC $0');$t = preg_replace($p, $r, $qq);print_r($t);
不至于吧?全是基础题,不要自己为难自己
一、
$ar = range(1, 54);shuffle($ar);print_r($ar);
$qq = array('4323254', '5723723');$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');$r = array('ABAB $0', 'ABCABC $0');$t = preg_replace($p, $r, $qq);print_r($t);
公司名不说了。
一、模拟扑克发牌,有52张扑克牌,我们给它编号,从1,2,3...52。一共52张牌。请使用数组装载这些牌,然后再打乱顺序输出。比如:43,2,18,21...3。
二、公司要和QQ合作,提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则。如4323254,规则为:ABAB。5723723,规则为ABCABC。
三、假如我们现在要记录下网站中每一个flash小游戏被玩过多少次,每个游戏在一个单独的页面。
(a)请问在玩这些游戏的时候如何记录数据?
(b)如果计算出每个游戏被玩过多少次?(如果使用数据库的话,请写出SQL)
第二题我没答出来。请教下如何实现那个需求。
题量还不错,就三道,不过这些题考的貌似没啥针对性,比那些一写就要写2小时的好多了。
第二题是什么意思 AB ABC?怎么我看不懂
在#1代码上扩充一下
$qqs = array('2343232', "4323254","22222","5123123","23412341234","2222222", '123456789');foreach($qqs as $qq) { $len = strlen($qq); $t = array(); echo "qq: $qq:: "; for($i=0; $i<$len; $i++) { if(($j = strpos($qq, $qq{$i}, $i+1)) != false) { if(($p=substr($qq, $i, $j-$i)) == substr($qq, $j, $j-$i)) $t[] = $p; while($j<$len-1 && $qq{$i} == $qq{++$j}) $t[] = substr($qq, $i, $j-$i+1); } } usort($t, function($a, $b) { return strlen($b) - strlen($a); }); $t = current($t); echo $d = 'A'; for($i=1; $i<strlen($t); $i++) { if($t{$i} != $t{$i-1}) $d++; echo $d; } echo PHP_EOL;}
第三题flash和php通信,要在flash那边传参数过来才行。
什么是“只能固定的号码里弄”?
这样的只能固定的号码里弄,如果不固定的,那就没法了
第二题是指数字中有连续重复循环的现象,就像循环小数那种:4 323254和5 723723
同理随便几个例子:87 42342398,74 914891489134
什么是“只能固定的号码里弄”?
这样的只能固定的号码里弄,如果不固定的,那就没法了
打个比方,用你的那个正则的形式如果再来一个222222的号码,那就不正确了,不可能说来一个号码加一个规则的
$qq = array('4323254', '5723723', '222222');$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');$r = array('ABAB $0', 'ABCABC $0');$t = preg_replace($p, $r, $qq);print_r($t);
$qq = array('4323254', '5723723', '222222');$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');$r = array('ABAB $0', 'ABCABC $0');$t = preg_replace($p, $r, $qq);print_r($t);
222222 既符合 ABCABC 的规则,又符合 ABAB 的规则
什么是“只能固定的号码里弄”?
这样的只能固定的号码里弄,如果不固定的,那就没法了
打个比方,用你的那个正则的形式如果再来一个222222的号码,那就不正确了,不可能说来一个号码加一个规则的
222222 既符合 ABCABC 的规则,又符合 ABAB 的规则
什么是“只能固定的号码里弄”?
这样的只能固定的号码里弄,如果不固定的,那就没法了
打个比方,用你的那个正则的形式如果再来一个222222的号码,那就不正确了,不可能说来一个号码加一个规则的
还有如果只是22222呢?那你说他是ABAB形式?
那我只能说汗颜,无话可说
不错,但题目并没有给出相邻数相同的识别规则,当然就不需要单列了
考虑到一般的需求,所以我才有 #8 的代码
$qq = array('4323254', '5723723', '222222');$p = array('/.*(\d\d)\\1.*/', '/.*(\d\d\d)\\1.*/');$r = array('ABAB $0', 'ABCABC $0');$t = preg_replace($p, $r, $qq);print_r($t);
题目是:
二、公司要和QQ合作,提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则。如4323254,规则为:ABAB。5723723,规则为ABCABC。
一般不应在题目之外附加条件吧?
还有如果只是22222呢?那你说他是ABAB形式?
那我只能说汗颜,无话可说
题目是:
二、公司要和QQ合作,提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则。如4323254,规则为:ABAB。5723723,规则为ABCABC。
一般不应在题目之外附加条件吧?
还有如果只是22222呢?那你说他是ABAB形式?
那我只能说汗颜,无话可说
那是你不理解题目而已
人家题目都说是任意的号码,后面2个后面只是打一个比方而已,并不是只是2个号码
第二题是指数字中有连续重复循环的现象,就像循环小数那种:4 323254和5 723723
同理随便几个例子:87 42342398,74 914891489134
原来是这样 谢谢你回答!
数字が何であっても、ルールは常に同じです。与えられた条件に自分の想像上の条件を追加すると、それは愚かになります。 試験では、意味に従って質問に答えるだけです。
2. 企業は QQ と協力し、QQ にインターフェースを提供する必要があります。 QQ番号をお送りします。 QQ Haoma のルールを検出するのにご協力ください。たとえば、4323254 の場合、ルールは ABAB です。 5723723、ルールはABCABCです。
通常、タイトルに条件を付けるべきではありませんよね?
そして、それがちょうど 22222 だったらどうなるでしょうか?それなら、ABAB形式だと言うのですか?
それなら、恥ずかしくて何も言えないとしか言えません
それは、あなたが質問を理解していないからです
質問は任意の数字だと人々は言いますが、最後の2つは単なる例え話ですが、数字が 2 つだけではありません
数字がいくつであっても、ルールは常に同じです。与えられた条件に自分の想像上の条件を加えた場合、それは間違いになります。試験では、質問の意味に従って答えてください:
2. 企業は QQ と協力し、QQ にインターフェースを提供する必要があります。 QQ番号が送信されます。 QQ Haoma のルールを検出するのにご協力ください。たとえば、4323254 の場合、ルールは ABAB です。 5723723、ルールはABCABCです。
そして、それがちょうど 22222 だったらどうなるでしょうか?それなら、ABAB形式だと言うのですか?
それなら、恥ずかしくて何も言えないとしか言えません
それは、あなたが質問を理解していないからです
質問は任意の数字だと人々は言いますが、最後の2つは単なるアナロジーです
笑、それでは何も言うことはありません。この質問では、数字に基づいて数字を見つけるためのルールは固定されていないと述べましたが、あなたはそれがあなた自身の推測であり、条件を追加したと述べました。私が理解できないと思いますか、私は何も言いませんでした
私は雄牛の角を掘るのが得意です
QQ 番号のルールを検出するのを手伝ってください
と
のルールを見つけてください数字に基づいた数字
それらは同じ意味ですか?
数字を検出するためのルールは、もちろん既存のルールに基づいています。 それに、「数字から数字を求めるルール」は、「数字から数字を見つけるルール」でもあるはずです
数字がいくつあっても、ルールは常に同じです。与えられた条件に自分の想像上の条件を加えた場合、それは間違いになります。試験では、質問の意味に従って答えてください:
2. 企業は QQ と協力し、QQ にインターフェースを提供する必要があります。 QQ番号が送信されます。 QQ Haoma のルールを検出するのにご協力ください。たとえば、4323254 の場合、ルールは ABAB です。 5723723、ルールはABCABCです。
通常、タイトルに条件を付けるべきではありませんよね?
そして、それがちょうど 22222 だったらどうなるでしょうか?それなら、ABAB形式だと言うのですか?
それなら、恥ずかしくて何も言えないとしか言えません
それは、あなたが質問を理解していないからです
質問は任意の数字だと人々は言いますが、最後の2つは単なるアナロジーです
笑、それでは何も言うことはありません。この質問では、数字に基づいて数字を見つけるためのルールは固定されていないと述べましたが、あなたはそれがあなた自身の推測であり、条件を追加したと述べました。私が理解できないと思うので、何も言いませんでした
私は雄牛の角を掘るのが得意です
QQ 数字の法則を検出するのを手伝ってください
と
数字に基づいて数字の法則を見つけてください
それらは同じ意味ですか?
数字を検出するためのルールは、もちろん既存のルールに基づいています。
それに、「数字から数字を求めるルール」は、「数字から数字を見つけるルール」でもあるはずです
数字がいくつあっても、ルールは常に同じです。与えられた条件に自分の想像上の条件を加えたら騙されてしまいます
試験では、意味に従って質問に答えるだけです
問題は次のとおりです:
2. 企業は QQ と協力し、QQ にインターフェースを提供する必要があります。 QQ. QQ番号が送信されます。 QQ Haoma のルールを検出するのにご協力ください。たとえば、4323254 の場合、ルールは ABAB です。 5723723、ルールはABCABCです。
一般的にタイトルに条件を付けるべきではありませんよね?
そして、それがちょうど 22222 だったらどうなるでしょうか?それなら、ABAB形式だと言うのですか?
それなら、恥ずかしくて何も言えないとしか言えません
それは、あなたが質問を理解していないからです
質問は任意の数字だと人々は言いますが、最後の2つは単なるアナロジーです
笑、それでは何も言うことはありません。この質問では、数字に基づいて数字を見つけるためのルールは固定されていないと述べましたが、あなたはそれがあなた自身の推測であり、条件を追加したと述べました。私が理解できないから何も言いませんでした
そうすると、あなたが言いたいのは、最初に考えられるルールをすべてリストアップし、次にそれらに一致する数字を使用するだけです
あはは
QQ へのインターフェースを介して QQ 番号が発行されます。 QQ Haoma のルールの検出にご協力ください
この文は非常に明確である必要があります。「QQ Haoma のルールを検出してください」
ルールがわかっているという意味ですか?
それでは、私は本当にバカです
「検出ルール」なので、当然ルールはすでに存在します
トラブルに巻き込まれるのは私の方が得意です
QQ番号のルールを検出するのに協力してください
と
Find数字に基づいて数字を出します ルール
は同じ意味ですか?
数字を検出するためのルールは、もちろん既存のルールに基づいています。
それに、「数字から数字を求めるルール」は、「数字から数字を見つけるルール」でもあるはずです
数字がいくつあっても、ルールは常に同じです。与えられた条件に自分の想像上の条件を加えたら騙されてしまいます
試験では、意味に従って質問に答えるだけです
問題は次のとおりです:
2. 企業は QQ と協力し、QQ にインターフェースを提供する必要があります。 QQ. QQ番号が送信されます。 QQ Haoma のルールを検出するのにご協力ください。たとえば、4323254 の場合、ルールは ABAB です。 5723723、ルールはABCABCです。
一般的にタイトルに条件を付けるべきではありませんよね?
そして、それがちょうど 22222 だったらどうなるでしょうか?それなら、ABAB形式だと言うのですか?
それなら、恥ずかしくて何も言えないとしか言えません
それは、あなたが質問を理解していないからです
質問は任意の数字だと人々は言いますが、最後の2つは単なるアナロジーです
笑、それでは何も言うことはありません。この質問では、数字に基づいて数字を見つけるためのルールは固定されていないと述べましたが、あなたはそれがあなた自身の推測であり、条件を追加したと述べました。私が理解できないから何も言いませんでした
そうすると、あなたが言いたいのは、最初に考えられるルールをすべてリストアップし、次にそれらに一致する数字を使用するだけです
はは
QQ へのインターフェースを介して QQ 番号が発行されます。 QQ Haoma のルールの検出にご協力ください
この文は非常に明確である必要があります。「QQ Haoma のルールを検出してください」
ルールがわかっているという意味ですか?
それから、私は本当に無知です
3 番目の質問は、ゲームの開始時に php ページをリクエストし、メッセージを php ページに送信すると、php ページには ID、ニックネーム、時間などフラッシュ側でソケット メソッドを直接使用して、サーバーのサービスとの接続を確立することもできます。
phpページ内のjsはフラッシュ内で呼び出せるので、動的ページアドレスにアクセスすることも可能だと記憶しています。以前、Flash 宝くじモジュールに取り組んでいたときに、Flash ページと aspx ページ間の対話を行ったことがあります。
動的ページ側が正常に実行された場合は、write("success=1") するだけで、フラッシュ側は成功値を受け取ることができ、動的ページ側でこれらの文字列を出力する必要はありません。 Flash側は実行結果状況を知る必要はありません)
既然是“检测规则”,自然是规则已存在了
我比较好钻牛角
请帮忙检测QQ号码的规则
与
根据号码来找出号码的规则
是一个意思吗?
检测号码的规则,当然是根据已有规则做检测啦!
再说“根据号码来找出号码的规则”也应该是“根据号码来找出号码的 规律”呀
无论是多少的号码,但规则总是不变的。如果在一给定的条件之外增加自己臆想的条件,那就是蛇足了
考试嘛,按题意解答就是了
题目是:
二、公司要和QQ合作,提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则。如4323254,规则为:ABAB。5723723,规则为ABCABC。
一般不应在题目之外附加条件吧?
还有如果只是22222呢?那你说他是ABAB形式?
那我只能说汗颜,无话可说
那是你不理解题目而已
人家题目都说是任意的号码,后面2个后面只是打一个比方而已,并不是只是2个号码
呵呵,那我无话可说,人家这题都声明了根据号码来找出号码的规则,并不固定,你却说那是自己臆测,自己加条件,当我啥都不懂,啥都没说吧
那你的意思就是说,先列出所有的进可能的规则,然后用号码去里面匹配就完了呗
呵呵
提供接口给QQ,会发QQ号过来。请帮忙检测QQ好嘛的规则
这句话应该很清楚,“请检测QQ好嘛的规则”
难道说规则已知?
那我确实愚昧了
跟你讨论没意义,如果是已知规则,人家就不需要叫你去检测,而是叫你写程序来匹配并且告诉你规则了
没必要跟你讨论这个下去,你喜欢钻文字牛角尖你就去钻吧
这道题纯粹就是考简单的算法而已,写一个简单的算法能检测任意一个号码的规则
这三道题
第一题主要考的是数组的运用
第二题考的是算法
第三题考的是flash与php的通信
第二题思路:
对于每个qq,判断qq的前缀和后缀。树的长度从0 - strlen/2
如4323254
索引0开始的:
1位前缀:4,后缀3 不等
2位前缀:43 后缀23 不等
3位前缀的:432后缀325 不等
。。。
索引1开始的:
2前缀32 后缀32相等
计算长度最大的即可
$qqNs = array("4323254","22222","5123123","23412341234","2222222");$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";foreach($qqNs as $tmp){ $max = 1; $qq = $tmp; while($qq){ for($i=1,$n = floor((strlen($qq)/2));$i <= $n;$i++){ $preTree = substr($qq, 0, $i); $postTree = substr($qq,$i,$i); if($preTree == $postTree){ if($i>=$max){ $max = $i; } } } $qq = substr($qq,1); } echo $tmp.": ".substr($str,0,$max)."<br/>";
4323254: AB22222: AB5123123: ABC23412341234: ABCD2222222: ABC
第二题思路:
对于每个qq,判断qq的前缀和后缀。树的长度从0 - strlen/2
如4323254
索引0开始的:
1位前缀:4,后缀3 不等
2位前缀:43 后缀23 不等
3位前缀的:432后缀325 不等
。。。
索引1开始的:
2前缀32 后缀32相等
计算长度最大的即可
$qqNs = array("4323254","22222","5123123","23412341234","2222222");$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";foreach($qqNs as $tmp){ $max = 1; $qq = $tmp; while($qq){ for($i=1,$n = floor((strlen($qq)/2));$i <= $n;$i++){ $preTree = substr($qq, 0, $i); $postTree = substr($qq,$i,$i); if($preTree == $postTree){ if($i>=$max){ $max = $i; } } } $qq = substr($qq,1); } echo $tmp.": ".substr($str,0,$max)."<br/>";
4323254: AB22222: AB5123123: ABC23412341234: ABCD2222222: ABC
他不是有 $qq = substr($qq,1); 吗?
每次去掉第一个字符,直到为空
第二题思路:
对于每个qq,判断qq的前缀和后缀。树的长度从0 - strlen/2
如4323254
索引0开始的:
1位前缀:4,后缀3 不等
2位前缀:43 后缀23 不等
3位前缀的:432后缀325 不等
。。。
索引1开始的:
2前缀32 后缀32相等
计算长度最大的即可
$qqNs = array("4323254","22222","5123123","23412341234","2222222");$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";foreach($qqNs as $tmp){ $max = 1; $qq = $tmp; while($qq){ for($i=1,$n = floor((strlen($qq)/2));$i <= $n;$i++){ $preTree = substr($qq, 0, $i); $postTree = substr($qq,$i,$i); if($preTree == $postTree){ if($i>=$max){ $max = $i; } } } $qq = substr($qq,1); } echo $tmp.": ".substr($str,0,$max)."<br/>";
4323254: AB22222: AB5123123: ABC23412341234: ABCD2222222: ABC
第二题思路:
对于每个qq,判断qq的前缀和后缀。树的长度从0 - strlen/2
如4323254
索引0开始的:
1位前缀:4,后缀3 不等
2位前缀:43 后缀23 不等
3位前缀的:432后缀325 不等
。。。
索引1开始的:
2前缀32 后缀32相等
计算长度最大的即可
$qqNs = array("4323254","22222","5123123","23412341234","2222222");$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";foreach($qqNs as $tmp){ $max = 1; $qq = $tmp; while($qq){ for($i=1,$n = floor((strlen($qq)/2));$i <= $n;$i++){ $preTree = substr($qq, 0, $i); $postTree = substr($qq,$i,$i); if($preTree == $postTree){ if($i>=$max){ $max = $i; } } } $qq = substr($qq,1); } echo $tmp.": ".substr($str,0,$max)."<br/>";
4323254: AB22222: AB5123123: ABC23412341234: ABCD2222222: ABC
涉及到规则,一般都会有标准的争论。
#2要考虑对称的情况,比如445445,44554455,这些都应该是AB?
#3是一个高并发计数器+nosql的应用场景,how about nodejs+redis?
涉及到规则,一般都会有标准的争论。
#2要考虑对称的情况,比如445445,44554455,这些都应该是AB?
这种情况确实是忘记考虑了,#1的也忽略了2222这种应该是AAAA的规则。
flash如何与php通信呢?
第三道题没有人讨论吗?
第一道题,应该用链表最适合了。
还有很多其他的办法,但是都显得比较臃肿。
第二到题,没有好办法。、
第三道题,用js?
学习了
学到一个词 高并发计数器
用缓存来计数之后再存入数据库 这么简单的思路之前没想到 悲剧
flash如何与php通信呢?
第三道题没有人讨论吗?
1.利用页面刷新,存在session
2.借助xml通信
第二题反了吧,应该是QQ提供公共API,然外面的人调用。不然来一个公司就要响应一个接口,腾讯的人不累死,也不符合软件是设计思想
看这帖子我是明白了两点:
1.是都是从应试教育走过来的,考题贴不论题目难易,总能吸引相当多的人
2.是几十年来总算见到个比我脾气还犟的人,哈哈
第二题我想到的是,最小编辑距离,偶算法弱,就不参与讨论了
第二题,综合前面各位大大,简单写下,欢迎给意见
function gz($qq){ $len = strlen($qq); $str = "ABCDEFG"; $ret = '无规则'; $first = substr($qq,0,1); if($len==substr_count($qq,$first)) return 'AA'; for($i=0;$i<intval($len/2);$i++){ for($j=1;$j<intval($len/2)+1;$j++){ $a = substr($qq,$i,$j); $b = substr($qq,$i+$j,$j); if($a==$b){ $ret = substr($str,0,$j).substr($str,0,$j); } } } return $ret;}echo gz('888888').'<br>';echo gz('6521218').'<br>';echo gz('8712312369').'<br>';echo gz('881881');
AAABABABCABCABCABC
看这帖子我是明白了两点:
1.是都是从应试教育走过来的,考题贴不论题目难易,总能吸引相当多的人
2.是几十年来总算见到个比我脾气还犟的人,哈哈
第二题我想到的是,最小编辑距离,偶算法弱,就不参与讨论了
不是很懂,知识学习学习
第二题我也没有想出来。。其他还好呢。如果仅是:4323254,规则为:ABAB。5723723,规则为ABCABC的话还是蛮简单。如果有33224556 AABB 22222 AAAAA的话就麻烦了
学习了,是很有用的面试方法,也是大家要学习的面试技巧。
C# 第一题