JBTALKS.CC

标题: [分享] 昨天的面试问题让我感到很疑惑, 4/3/2011 我换工作的决定越来越强烈!! [打印本页]

作者: 宅男-兜着走    时间: 2011-1-12 08:37 PM
标题: [分享] 昨天的面试问题让我感到很疑惑, 4/3/2011 我换工作的决定越来越强烈!!
本帖最后由 宅男-兜着走 于 2011-4-3 10:44 PM 编辑

这是我最近去的应征考试, 写给大家做分享用途。
也顺便能让那些还没应征过工作的朋友们看看
原来做篇程员还要考试的

地点: SG
公司: HEULXX (自己猜)
我第一次面试, 面试官当场写了个Method。

  1. public Rectangle getRectangle(Rectangle rec)
  2. {
  3.       if(rec !=null && rec.left == 0)
  4.          rec.right = 0;
  5.      return rec;
  6. }
复制代码
他的提问是, 这个method 在一个情况下, 会throw exception。请问是什么情况

我的回答
单单这样看我觉得没问题, 但是我回答他: 如果 left 还没set 的话, 可能会throw null exception 吧。
他什么也没说,我也不知道我的答案是对还是错

  1. class person
  2. {
  3.     person mother;
  4.     person father;
  5.     string name, ic;
  6.     int age;
  7.    
  8.     public person(person mom, person dad, string name, string ic, int age)
  9.    {
  10.         .....
  11.    }

  12.     static person[] peoples;   

  13.    public static void main(string[] args)
  14.    {
  15.       ...... your code......
  16.    }
  17. }

  18. // write a method to find grand children
  19. List<Person> getGrandchildren(Person p)
  20. {
  21.     ..... method code .....
  22. }
复制代码
这个是笔试, 他要我写出个 Method. 找出孙子。



虽然我有写, 但是写到觉得不是很好, 如果是你们怎么回答??


第二个公司:
地点: SG
公司: EDMX.XXX

问题:

  1. //write a program to display this shape.
  2. 1
  3. 1 2
  4. 1 2 3
  5. 1 2 3 4
  6. 1 2 3 4 5
复制代码
我的回答:

  1. for(int i = 1; i <= 5; i ++)
  2. {
  3.      string str = "";
  4.      for(int j = 1 ; j <= i; j++)
  5.     {
  6.        str += j;
  7.     }
  8.     Console.WriteLine(str);
  9. }
复制代码
我错误的回答:

  1. for(int i = 1; i <= 5; i ++)
  2. {
  3.      for(int j = 1 ; j <= i; j++)
  4.     {
  5.        Console.WriteLine(j);
  6.     }
  7.    
  8. }
复制代码
紧张杀死人!!!!!

最近跟一间公司申请了当 PHP Web Programmer,
公司名: SPX
地点: SG

问题:
Web Developer Application > Step 2 - Test Instructions
Objective
1.        This is meant to test your proficiency in designing and developing a Web application.
2.        Once you're done, you can navigate to the Submit page to submit your résumé and your answers.
What You Need To Do
1.        You are to design and implement a simple blog.
2.        Try to limit your effort to 4 days - we do not wish to take up too much of your time.
3.        Make sure you state all your assumptions in your code.
4.        Pages that you need to produce
•        Blog entries list (this is the home page)
•        Post a Blog entry.
•        View a Blog entry
The Functional Specifications
1.        Overview
•        The blog is publicly viewable.
•        The blog is updated by a blog Owner.
•        You do not need to implement a log-in for the Owner. Bonus if you do.
•        Each blog entry can have multiple comments by other Users.
        User Registration
•        You do not need to implement any form of User registration or log-in.
•        State your assumptions how multiple Users can post Comments.
        Blog entries list (this is the home page)
•        Show number of comments for each entry
•        Show date of each entry
•        Show the Title and part of the Body
        View a Blog entry
•        Display the entry Title and Body.
•        Blog entries need not be editable or deletable. Bonus if you do.
•        Associated Comments appears here.
•        Post a Comment form appears here.
        Blog Comments
•        Each blog entry can have multiple comments by other Users.
•        Comments do not have to be threaded. Bonus if you do.
        Optional features
•        Search, Archive, RSS feeds, Sorting options, User registration, Interactive User Interfaces
•        Support for GUI editing or HTML codes in the Body.
What you need to submit
1.        PHP for code, MySQL for database.
2.        You are required to submit 1 zipped file, "answer.zip". Make sure that answer.zip contains
1.        All the necessary files for us to run your application. If you're using a framework, please include the entire framework as well.
2.        All the necessary SQL statements and any other information for us to re-create the database you're using.
3.        We may contact you should we run into problems duplicating your environment.
What we are looking out for
1.        Your design of the database tables
2.        How you write and organize code that is easy to read.
3.        How you comment your code
As a bonus, we would also like to see
1.        Use of MVC
2.        Use of CakePHP framework
3.        Clever reuse of components
4.        Efficient code, efficient database calls


我的答案在这里, 用了 NO-IP host 了。 总共花了 3 天半的时间做,写程式 1天, 设计2天半  
http://urjunior.3utilities.com/blogproject/posts/


就在今天 21/1/2011 终于回复我去面试了。 值得高兴下。

11/2/2011 找到工作了, 但是不知道薪水会不会太少


就在 4/3/2011 我换工作的决定越来越坚定, 我不喜欢坐着没事情,等放工。
我要投身 软件业!!!
作者: 宅男-兜着走    时间: 2011-1-12 08:38 PM
保留 ..................
作者: MISSJOEY    时间: 2011-1-12 09:31 PM
看不懂。。。。。。。。
作者: 街头混混    时间: 2011-1-12 09:32 PM
看不明你要表达什么,可是第一个code 第三line的 不是&  是 &&。
作者: 街头混混    时间: 2011-1-12 09:36 PM
我试过要考一个小时的试全部subjeective,一共20 pages。神经。。。。。 而且全部很detail 的问题
作者: 宅男-兜着走    时间: 2011-1-13 12:06 AM
回复 4# 街头混混


    抱歉, 我写错
    但是 & , && 不是出 Error 的重点。
    我的表达能力搞到你不明白问题 ??
  
    我的也是 Subjective 问题, 不过才 10 题左右。 最后还当场写个method 问你问题。 明天应该也是要做类似的test 吧 -.-|||
   
    20 题太离谱了。
作者: shippo    时间: 2011-1-13 12:11 AM
本帖最后由 shippo 于 2011-1-13 12:15 AM 编辑

如果这个Rectangle 是System.Drawing.Rectangle
以下的code不会throw exception,因为根本不能运行。

  1. public Rectangle getRectangle(Rectangle rec)
  2. {
  3. if(rec !=null & rec.left == 0) //应该是 .Left ,“&”虽然也行不过减慢了执行速度。
  4.          rec.right = 0;                     
  5. //一样应该是.Right,还有.Left 和 .Right 只是readonly.
  6. //在这里要改变.Right的方法只能set Width=0 了.
  7. return rec;                           
  8. //如果不算以上的错误,一个0 width 的 Rectangle,还是很奇怪。
  9. //除非Rectangle 是 自己写的struct.
  10. }
复制代码

作者: 街头混混    时间: 2011-1-13 12:41 AM
回复  街头混混


    抱歉, 我写错
    但是 & , && 不是出 Error 的重点。
    我的表达能力 ...
宅男-兜着走 发表于 2011-1-13 12:06 AM



    不是二十题,是二十面满满的问题。。。。。。
作者: 街头混混    时间: 2011-1-13 12:45 AM
都不会throw exception吧? 你都没注明要throw。
作者: 宅男-兜着走    时间: 2011-1-13 12:48 AM
回复 7# shippo


    lol!! 他什么也没说, 我要求给我detail, 知道 Rectangle class 是如何,他说REC 的class perfect!!
    而且你竟然猜想是 dotnet 哦

    我猜想应该是没标准答案的吧。

    第二题那个我想不通, 怎么样子找到一组人是 “孙子”。
   
    class 内有记载 Parent 这题很乱水下
作者: 宅男-兜着走    时间: 2011-1-13 12:51 AM
回复 9# 街头混混


errr ... 不一定要手动 throw 才会 throw erros 的, 有可能 invalid input, null exception 被程式发现到, 会自动throw 的。
作者: 宅男-兜着走    时间: 2011-1-13 12:52 AM
不是二十题,是二十面满满的问题。。。。。。
街头混混 发表于 2011-1-13 12:41 AM



    这个很严重下, paiseh 我看错
    你是哪里应征??
作者: shippo    时间: 2011-1-13 12:57 AM
本帖最后由 shippo 于 2011-1-13 03:24 AM 编辑

回复 10# 宅男-兜着走

第二题要init person class 的话就要有个原始origin,方便起见,我把person class 留下father 和 name而以。

我会这样:

  1. person origin=null;
  2. person a=new person(origin,"Alan");
  3. person b=new person(a,"Jam");
  4. person c =new person(b,"Alex");
  5. person d=new person(c,"Yash");
  6.                        
  7. person.peoples=new person[10];
  8. person.peoples[0]=origin;
  9. person.peoples[1]=a;
  10. person.peoples[2]=d;
  11. person.peoples[4]=c;
  12. person.peoples[3]=b;
  13.                        
  14. person result=person.GetGrandChild(a,person.peoples);
复制代码

  1. private static person GetChild(person child,person[]pp)
  2. {
  3.         if(child!=null&&child.Name!=null)
  4.         {
  5.                 for(int i=0;i<pp.Length;i++)
  6.                 {
  7.                         if(pp[i]!=null&&pp[i].father!=null)
  8.                         {
  9.                                 if(pp[i].father.Name==child.Name)
  10.                                 return pp[i];
  11.                         }
  12.                 }
  13.         }
  14.         return null;
  15. }
  16.        
  17. public static person GetGrandChild(person grand,person[] pp)
  18. {
  19.         return GetChild(GetChild(grand,pp),pp);
  20. }
复制代码
如果有时间限制,我只能写出上面的,如果有多个grandChild只能找到一个grandChild。
作者: shippo    时间: 2011-1-13 01:03 AM
回复 10# 宅男-兜着走

考官是新加坡人吧?那你叫考官,how can you set a question without letting me know what kind of language it is and what class it belongs to?If i ask you meaning of "air" without letting you it is Malay or English,can you answer it?
作者: 街头混混    时间: 2011-1-13 01:12 AM
回复  街头混混


errr ... 不一定要手动 throw 才会 throw erros 的, 有可能 invalid input, null ex ...
宅男-兜着走 发表于 2011-1-13 12:51 AM



    可是我看来看去都看不出。。。因为你的code就那一个part罢了。
作者: 街头混混    时间: 2011-1-13 01:14 AM
回复  宅男-兜着走

考官是新加坡人吧?那你叫考官,how can you set a question without letting me kn ...
shippo 发表于 2011-1-13 01:03 AM


我正想说呢。 现在很多考官是故意玩人的,以为自己很了不起就问个自己知道范围的问题。可是他们却不知道我们一头雾水
作者: 街头混混    时间: 2011-1-13 01:19 AM
这个很严重下, paiseh 我看错
    你是哪里应征??
宅男-兜着走 发表于 2011-1-13 12:52 AM



    在kl,应征security的工。linux,unix,firewall,cisco,network,encryption,cryptography,什么都出来而且是很technical detail的东西,20pages x 1pages最少三题,你自己看有几题?而且一小时罢了。 我直接晕掉,而且也没通知我要test一个小时。根本就是叫我去被弄罢了而且我才是fresh grad。又问了一堆有的没得问题,也没认真在听我回答。最后dulan直接意识回答他。 一脸自以为是的样子
作者: Super-Tomato    时间: 2011-1-13 01:42 AM
第一题:
應該是 condition 部份的 error 吧

第二题:
會在 Person 中增加個 array 記錄本身的 child class,和寫出個 addChild 的 method.
這样在建立 new Person 的時候就可以通過参數1和2执行 addChild 了
最後再寫個 grandChild method 搜索 array 就可以得到所要的答案


p/s: 没用過 .NET 所以以上可能 .NET 上會行不通
作者: weeming21    时间: 2011-1-13 11:18 AM
这是我最近去的应征考试, 写给大家做分享用途。
也顺便能让那些还没应征过工作的朋友们看看
原来做 ...
宅男-兜着走 发表于 2011-1-12 08:37 PM


找出孙子的method,觉得他要的答案就是 recursive peoples 两次找出孙子吧, ic 作 unique key
作者: weeming21    时间: 2011-1-13 11:22 AM
在kl,应征security的工。linux,unix,firewall,cisco,ne ...
街头混混 发表于 2011-1-13 01:19 AM


什么公司那么牛? 这样的考题,如果都会,估计薪水都要破万了
作者: 宅男-兜着走    时间: 2011-1-13 01:38 PM
回复  宅男-兜着走

第二题要init person class 的话就要有个原始origin,方便起见,我把person class 留 ...
shippo 发表于 2011-1-13 12:57 AM


抱歉, 我没写清楚,

  1. List<Person> GetGrandChildren (Person p){}
复制代码
只能有一个参数。
作者: 宅男-兜着走    时间: 2011-1-13 01:42 PM
回复 14# shippo


    是,我承认, 我今天的应征基本上可以说是白去。
   
    也可以说是我看待到太认真, 温习到太晚, 搞到自己表现不佳。

    今天可以说是最出糗的, Final Year Project 我说到几厉害就几厉害。

    他出个画金字塔的 题目, 用笔写, 我疏忽在 用错 WriteLine(), Write(), 就被判死刑了。
    考官一句话 : According to my experience, i believe that your logic and coding skill is not meet our requirment, 然后就叫我回家了
   
    找工作的路还真的是。。。
作者: 宅男-兜着走    时间: 2011-1-13 01:45 PM
回复 18# Super-Tomato

你的答案第一题, 我觉得有理由。

但是第二题他的需求是, 在 Main Application 写一个 Find GrandChild(Person p)

好像没说到可以 写 method 在class -.-|||
作者: 宅男-兜着走    时间: 2011-1-13 01:48 PM
回复 19# weeming21


    er ... 好的, recursive, 但是你能够具体说明下吗??
   
    比如说, 要怎么 比对, 然后可以判断的出, 此人正是“孙子”?
作者: Super-Tomato    时间: 2011-1-13 03:38 PM
回复  Super-Tomato

你的答案第一题, 我觉得有理由。

但是第二题他的需求是, 在 Main Application 写一个 Find GrandChild(Person p)

好像没说到可以 写 method 在class -.-|||
宅男-兜着走 发表于 2011-1-13 01:45 PM



個人的方式吧,是我面试我就會提出為何我要這样寫的原因,不然一個個比對的話更加耗時間和處理器資源

public function GrandChild( Person p )
{
        //do p->getChilds()  with "for ... in" to retrieve grandchilds
}
作者: 宅男-兜着走    时间: 2011-1-13 04:00 PM
回复 25# Super-Tomato

谢谢分享。
看来题目诡异不是问题。

最主要的是要表达的出来就好了。
这方面我还真的缺乏经验。
作者: 街头混混    时间: 2011-1-13 04:10 PM
什么公司那么牛? 这样的考题,如果都会,估计薪水都要破万了
weeming21 发表于 2011-1-13 11:22 AM



    不方便透露。可是也不是什么大公司。 说真的全部会的话薪水随便几十千而且我也不用在malaysia做。神经。。。。。。。 还说是junior position fresh grad encourage to apply。。。。 我的天。。。
作者: shippo    时间: 2011-1-13 05:51 PM
本帖最后由 shippo 于 2011-1-13 06:17 PM 编辑

我改了下:
  1. person origin=null;
  2. person a=new person(origin,"Alan");
  3. person b=new person(a,"Jam");
  4. person c =new person(b,"Alex");
  5. person d=new person(c,"Yash");
  6.                        
  7. person.peoples=new person[10];
  8. person.peoples[1]=a;
  9. person.peoples[0]=d;
  10. person.peoples[2]=c;
  11. person.peoples[3]=b;
  12.                
  13. List<person>result=person.GetGrandChild(b);
  14.                        
  15. if(result!=null)
  16. MessageBox.Show(result[2].Name);
复制代码

  1. public static List<person> GetGrandChild(person p)
  2. {
  3.         if(p==null||p.Name==null)
  4.         return null;
  5.                
  6.         List<person> result=new List<person>();
  7.         person dad=p;
  8.         bool noSon=false;
  9.         result.Add(p);
  10.                
  11.         while(!noSon)
  12.         {
  13.                 foreach(person pp in peoples)
  14.                 {
  15.                 if(pp != null && pp.father!=null && pp.father.Name!=null)
  16.                        {
  17.                         if(pp.father.Name==dad.Name)
  18.                         {
  19.                                 result.Add(pp);
  20.                                 dad=pp;
  21.                                 noSon=false;
  22.                                 break;
  23.                         }
  24.                         else
  25.                         {
  26.                                 noSon=true;
  27.                         }
  28.                       }
  29.                }
  30.         }
  31.                
  32.   if(result.Count<3)
  33.         return null;
  34.    else
  35.    {
  36.         result.RemoveRange(3,result.Count-3);
  37.         return result;
  38.    }
  39. }
复制代码

作者: 宅男-兜着走    时间: 2011-1-13 07:30 PM
我改了下:
shippo 发表于 2011-1-13 05:51 PM


OK, 我大概看了你的Code, 我想你要表达的是

一个父, 有 Collection 的儿子吧。

就如Tomato 大师说的, 可以不必照着题目给的class去回答
但是,

孙子的定义是 ....
Person -> Father -> Father 才对吧?
作者: shippo    时间: 2011-1-13 09:22 PM
本帖最后由 shippo 于 2011-1-13 09:36 PM 编辑
OK, 我大概看了你的Code, 我想你要表达的是

一个父, 有 Collection 的儿子吧。

就如Tomato 大 ...
宅男-兜着走 发表于 2011-1-13 07:30 PM



因为你的constructor要输入father这个class,所以每个class都有自己的father。
如果自己class的name出现在别人的class的father.name,那它就是我儿子。
再重复循环,就能拿到整个家族。最后我把list减少至3个element.[0]是爷爷,[1]是爸爸,[2]是孙子。
另一个方法就像tomato说的,在initialise class 时 记录自己的father.最后直接从记录提取。

不知道是你缩写了题目还是原本就是这样,我刚看了多一次题目,constuctor 里什么都没做,father,name 也没有property,所以多处都是我assume的。

ps:孙子应该是father〉father〉son.
用这个person class 来比喻的话应该是(括号里是class name):
(grandfather)grandfather.name==(dad)dad.father.name
(dad)dad.name==(son)son.father.name

小弟浅见 。
作者: 宅男-兜着走    时间: 2011-1-14 12:58 PM
本帖最后由 宅男-兜着走 于 2011-1-14 12:59 PM 编辑

回复 30# shippo

可能我题目写错吧, 我应该放 parent 是 public modifier 的, 题目我只看了一眼, 我只是大概大概写出来而已。
不过 variable, constructor 我是很记得的。

我回答题目, 参数我认为是 “爷爷”

Collection<Person> 内我当成可能里面有一个是孙子。

foreach(person p in collectionPerson)
{
     if(p.father.father == param.Name) // 以此类推
     datasToReturn.Add(p);
}

题目也没什么说明。
就这些第一面我给的Code 叫我找孙子。

不过我还是很感谢你的分享。
作者: duo8668    时间: 2011-1-15 07:51 PM
回复  shippo


    是,我承认, 我今天的应征基本上可以说是白去。
   
    也可以说是我看待到太 ...
宅男-兜着走 发表于 2011-1-13 01:42 PM

请问你的FYP写什么啊?我们的题目全部都是简单简单的都不是很难的。
作者: 宅男-兜着走    时间: 2011-1-15 09:32 PM
回复 32# duo8668


    我FYP也是做简单的东西,
    我的意识是我包办FYP咯 -.-|||
作者: pang1989    时间: 2011-1-16 04:31 AM
请问你是diploma还是degree毕业的???
作者: 宅男-兜着走    时间: 2011-1-16 09:07 PM
回复 34# pang1989

Diploma 的 -.-||| 学历低, 也是人家不考虑的其中一个因素吧。
作者: ~Zero    时间: 2011-1-17 01:03 AM
我很想问:第十三行的
  1. static person[] peoples;
复制代码
是什么来的?

我总觉得这个是关键。知道是什么了过后,其实就很容易了。
作者: 宅男-兜着走    时间: 2011-1-17 01:57 AM
我很想问:第十三行的是什么来的?

我总觉得这个是关键。知道是什么了过后,其实就很容易了。
~Zero 发表于 2011-1-17 01:03 AM


这个是 在 Main Program 里面的 Person Collection/Array, 具体上我也不知道是什么,题目没说清楚那是啥。
作者: ~Zero    时间: 2011-1-17 04:51 PM
本帖最后由 ~Zero 于 2011-1-17 04:53 PM 编辑

不确定 .NET 的写法,下面是 java 的:

  1. // write a method to find grand children
  2. List<Person> getGrandchildren(Person p) {
  3.    List<Person> grandchildren = new List<Person>(); // Construct an empty List<Person>
  4.    for (Person pers : this.peoples) { // Loop 全部人
  5.       // if is 爸爸的爸爸 or 爸爸的妈妈 or 妈妈的爸爸 or 妈妈的妈妈
  6.       if (pers.father.father.equals(p) ||
  7.          pers.father.mother.equals(p) ||
  8.          pers.mother.father.equals(p) ||
  9.          pers.mother.mother.equals(p)) {
  10.             grandchildren.add(pers); // 加进 list 里面
  11.          }
  12.       }
  13.    return grandchildren;
  14. }
复制代码
简单来说,loop 玩全部 peoples,如果他的父母的父母是 p 的话,就加进 list 里面。
作者: 宅男-兜着走    时间: 2011-1-17 07:10 PM
回复 38# ~Zero


    你的答案跟我那天回答的一模一样。
     
     我的想法就是如此, 但是他接受不接受还是个个人看法。
     不过, 他没打电话给我了, 也就证明我不在他们的考虑范围内。
作者: weeming21    时间: 2011-1-18 06:07 PM
我的答案在这里, 用了 NO-IP host 了。 总共花了 3 天半的时间做,写程式 1天, 设计2天半  
http://urjunior.3utilities.com/blogproject/posts/
宅男-兜着走 发表于 2011-1-12 08:37 PM


哪位仁兄那么快手? 我刚测试下xss,结果连首页也被script改成dun play play 了? 汗
作者: 宅男-兜着走    时间: 2011-1-18 06:11 PM
本帖最后由 宅男-兜着走 于 2011-1-18 06:14 PM 编辑

回复 40# weeming21


    我自己 -.-|||
    因为我看你玩, 我也玩。
    只是调用了 jquery plugin
作者: weeming21    时间: 2011-1-18 06:14 PM
回复  weeming21


    我自己 -.-|||
    因为我看你玩, 我也玩。
宅男-兜着走 发表于 2011-1-18 06:11 PM


原来原来,哈哈
作者: Super-Tomato    时间: 2011-1-18 08:17 PM
是不是有問題啊,我無法 post 成功,修改也一样
作者: 宅男-兜着走    时间: 2011-1-18 09:29 PM
回复 43# Super-Tomato


    刚才 weeming 来 key  script 进我的 db, 为了防止我做了点修改 ==
    然后忘记 调用 save
    修好了。
作者: Super-Tomato    时间: 2011-1-18 09:37 PM
回复  Super-Tomato


    刚才 weeming 来 key  script 进我的 db, 为了防止我做了点修改 ==
    然 ...
宅男-兜着走 发表于 2011-1-18 09:29 PM



測試可以,但 WYSIWYG 的功能則被過滤掉了
作者: 宅男-兜着走    时间: 2011-1-18 09:38 PM
回复 45# Super-Tomato

对hor, 怎么没想到, 我看到facebook的可以把 < > 变成 &lt; &gt;

怎么办到的??
作者: Super-Tomato    时间: 2011-1-18 09:44 PM
回复  Super-Tomato

对hor, 怎么没想到, 我看到facebook的可以把 < > 变成 < >

怎么办到的?? ...
宅男-兜着走 发表于 2011-1-18 09:38 PM



facebook 是不能使用 html,所以直接用 htmlentities 或 htmlspecialchars。如果你要用 strip_tags 的話可以使用第二参數保留某些 html 標簽
作者: 宅男-兜着走    时间: 2011-1-18 10:19 PM
回复 47# Super-Tomato

OK, Remove script 我是大概知道怎么做了,

但是人家 key HTML tag 下去我无法判断 那一个是 wysiwyg 生成的。

极限了 ==

无法做到像 JBt 这样的 HTML Editor
作者: Super-Tomato    时间: 2011-1-18 10:34 PM
回复  Super-Tomato

OK, Remove script 我是大概知道怎么做了,

但是人家 key HTML tag 下去我无法 ...
宅男-兜着走 发表于 2011-1-18 10:19 PM



你也不用去分哪些是使用者輸入的啊,直接過滤掉你所不允许的 tags 就可以了
作者: weeming21    时间: 2011-1-18 10:53 PM
最好是只允许某些Tag,可执行xss的Script太多了
<img src="javascript:alert('hello');">
<img src="java script:alert('hello');">
<img src="java&#X0A;script:alert('hello');">
这样也可以xss...
其实如果你的是要login才可以发帖的话,是安全的,那些留言可以完全htmlspecialchars过滤
作者: 宅男-兜着走    时间: 2011-1-18 11:29 PM
回复 49# Super-Tomato

其实如果我打 html tag 进去我的post

<html>    wsiwyg editor 会翻译成 &lt;html&gt;

但是如果你要修改的话,

wsiwyg 又把 &lt;html&gt; 变成 <html> 了。
作者: 宅男-兜着走    时间: 2011-1-18 11:34 PM
回复 50# weeming21


    呵呵呵, 因为题目没需求做login, 所以我就没做   

    我只是host 来玩玩。
    如你所说的,我用 htmlentities 翻译了 html tag
   
    我是今天才知道可以这样放 script 的
作者: Super-Tomato    时间: 2011-1-19 01:03 AM
最好是只允许某些Tag,可执行xss的Script太多了



这样也可以xss...
其实如果你的是要login才可以发帖 ...
weeming21 发表于 2011-1-18 10:53 PM



以上的方式是有針對某瀏覽器還是通用? 我剛測試没辦法执行
作者: Super-Tomato    时间: 2011-1-19 02:01 AM
回复  Super-Tomato

其实如果我打 html tag 进去我的post

<html>    wsiwyg editor 会翻译成 &lt;html&gt;

但是如果你要修改的话,

wsiwyg 又把 &lt;html&gt; 变成 <html> 了。
宅男-兜着走 发表于 2011-1-18 11:29 PM


不明白你所指的 wysiwyg editor 會如何翻译,但我剛測試了 ckeditor 好像没甚么問題啊
本機測試
作者: weeming21    时间: 2011-1-19 07:02 AM
回复 53# Super-Tomato

没记错的话是ie6 ie7
xss很头痛下
作者: weeming21    时间: 2011-1-19 07:05 AM
回复 52# 宅男-兜着走

这是正常的,一般情况下只有在real system被人搞过才会有所经验,有很多资深programmer也是不知道什么是xss,sql injection等安全威胁的
作者: 宅男-兜着走    时间: 2011-1-21 05:39 PM
回复 54# Super-Tomato

我不知道怎么说, 你试试看 写 &lt;h1&gt; some text &lt;/h1&gt; post 出去,  post 回来后放回去 CKEditor 看看。
作者: 宅男-兜着走    时间: 2011-1-21 05:41 PM
回复 56# weeming21

资深的都不会
不是吧??

XSS 是那天你表演我才看到。
上次有人表演给我看 browser 打javascript, 那个应该是 Script Inject 吧。

我知道 SQL Inject, 但是不会防。
因为我还没试过 SQL Inject 成功过。
作者: ~Zero    时间: 2011-1-21 10:15 PM
恭喜你,祝你面试成功~
作者: 宅男-兜着走    时间: 2011-1-21 11:36 PM
回复 59# ~Zero


    谢谢, 你的支持就是我的动力!!!
作者: Super-Tomato    时间: 2011-1-22 12:15 AM
回复  Super-Tomato

我不知道怎么说, 你试试看 写 <h1> some text </h1> post 出去,  post 回来后放回 ...
宅男-兜着走 发表于 2011-1-21 05:39 PM



不明白這個是不是你所指的??
演示
作者: 宅男-兜着走    时间: 2011-1-22 01:03 AM
不明白這個是不是你所指的??
Super-Tomato 发表于 2011-1-22 12:15 AM



不是。


  1.     <textarea name="ckEditor" rows="8" cols="60">
  2.         <?php echo "&lt;h1&gt;hello world&lt;/h1&gt;" ?>
  3.     </textarea>

  4. <script type="text/javascript" src="path to ck editor js/ckeditor.js"></script>
  5.     <script type="text/javascript">//<![CDATA[
  6.     CKEDITOR.replace('ckEditor');
  7.     //]]></script>
复制代码


然后你会看到的Output 是。
hello world而不是
<h1>hello world</h1>


作者: ~Zero    时间: 2011-1-22 01:27 AM
不是很明白你们在讨论什么 ==

如果在 source 里面是 <h1>text</h1>,output 就是 text
如果在 source 里面是 &ly;h1&gt;text&lt;/h1&gt;,output 就是 <h1>text</h1>
作者: 宅男-兜着走    时间: 2011-1-22 01:51 AM
不是很明白你们在讨论什么 ==

如果在 source 里面是 text,output 就是 text。
如果在 source 里面是 & ...
~Zero 发表于 2011-1-22 01:27 AM



    如果是要从 资料库里面提出来 修改的话,是不是要在 textarea 里面输出你要改的文章先嘛?
    但是很神奇的是, 他竟然把 &lt; &gt; 变成html tag 了。。。
   
    就是说, 如果使用者 输入 <   OK, CKEditor 会把它变成 &lt;  然后存入database, 这个很好。
    但是如果是要 update 文章的话。
   
    CKEditor 把 &lt; 变成 html 的 < 了。
作者: Super-Tomato    时间: 2011-1-22 05:20 AM
本帖最后由 Super-Tomato 于 2011-1-22 05:25 AM 编辑
不是。



然后你会看到的Output 是。
hello world而不是
hello world
宅男-兜着走 发表于 2011-1-22 01:03 AM



你要表達的是代码部份的内容就不要使用 html 吧?
jbtalks 内的 WYSISYG 编辑器中的代码表達是使用[ code][ /code],所以在 [ code][ /code]内的才進行 html 過滤
作者: weeming21    时间: 2011-1-22 07:42 AM
本帖最后由 weeming21 于 2011-1-22 07:44 AM 编辑
如果是要从 资料库里面提出来 修改的话,是不是要在 textarea 里面输出你要改的文章先嘛?
     ...
宅男-兜着走 发表于 2011-1-22 01:51 AM


其实这样的逻辑是没有错
当第一次用户输入<>,储存的时候进行转义
当要修改的时候在ckeditor里还原成源文,储存的时候又再进行转义,首页的输出不还原为原文就ok了
(如果不还原的话,某些符合会出现重复而造成错误,比如说 & 符号,第一次进数据库是 &amp; ,如果修改时不还原,第二次进数据库就会变成 &amp;amp; ,当在首页显示的时候就会错乱,变成 &amp; 而不是原来的&)
作者: weeming21    时间: 2011-1-22 07:58 AM
回复  weeming21

资深的都不会  
不是吧??

XSS 是那天你表演我才看到。
上次有人表演给我看 ...
宅男-兜着走 发表于 2011-1-21 05:41 PM


Programming很强,就算知道这些,也并不代表能完全防御,毕竟黑客入侵手法层出不穷,除非对所有黑客入侵技术都有研究,或许能防个90%,所以至今天天都有网站被黑客入侵。相反的,网络安全专家的programming也不一定很厉害。目前黑客入侵事件超过90%是通过Web管道入侵, 但其实inhouse software的漏洞更加多(buffer overflow),只是不容易接触到,也不广泛,所以没有察觉。
   
不成功就去测试到成功为止呀,不知己知彼,又何来防御
作者: ~Zero    时间: 2011-1-22 09:57 AM
哦明白了~
你是说,在 textarea 里面是 <,可是存进 database 是 &lt;。
然后当你开回 textarea 又变成了 < 对吗?

这不是正确的吗?
难道你要打进去是 <,然后存进 database 后再提出来变成 &lt; ??

就像 weeming21 所说,如果是这样,你连续存两次以上就会错乱了。

我有一次遇到一个 open source 的 php 软件,
他自动把 textarea 里面打的 enter (既 \r\n)转成 <br /> 存进 database,
过后提出来 edit 的时候连 <br /> 也在变 textarea 里面了。(它没有转回 \r\n )
submit 后竟然变成 &lt;br /&gt;<br />。。。
整个就是失败的 editor。
@.@
作者: fire-fly3    时间: 2011-2-25 03:54 PM
楼主薪水多少, 你也是degree 毕业?
透露一下。。。。
作者: 宅男-兜着走    时间: 2011-2-25 06:06 PM
楼主薪水多少, 你也是degree 毕业?
透露一下。。。。
fire-fly3 发表于 2011-2-25 03:54 PM


DIPLOMA 的。

我没找到 Programmer 的工作, troubleshoting, problem solving, 经验 不够深。没人请。
现在做 类似 IT Support 的工作。

范围是: Develop, Extend existing system, Networking, Maintain Server, 修电脑, Troubleshooting system problem

工钱少过 2000,可怜没?
作者: fire-fly3    时间: 2011-2-25 07:04 PM
回复 70# 宅男-兜着走


    新币接近两千很不错了。。。。 你在新加坡做工?
作者: 宅男-兜着走    时间: 2011-2-25 07:14 PM
回复  宅男-兜着走


    新币接近两千很不错了。。。。 你在新加坡做工?
fire-fly3 发表于 2011-2-25 07:04 PM



    在新山啊 。。。 马币来的。
    不过是试用期, 希望过后会起价。
作者: fire-fly3    时间: 2011-2-25 08:06 PM
回复 72# 宅男-兜着走


    我懒惰爬完帖, 之前看到你提到新加坡。。。。 你是那间大学学院毕业的?
作者: 宅男-兜着走    时间: 2011-2-25 08:10 PM
回复 73# fire-fly3

呵呵呵呵, 南方学院毕业的!!
作者: fire-fly3    时间: 2011-2-25 09:36 PM
回复 74# 宅男-兜着走


    读完degree 啊, 你都有diploma 读degree 很快的。。。
在jb 工作?
作者: 宅男-兜着走    时间: 2011-2-25 09:45 PM
回复 75# fire-fly3

可能读partime 吧, 不想蹲学校。太闷了!
有没有读都是一样的。
我在这里学的,比学校学的实际多了。

对对JB做, Tampoi 哪里。
作者: NC7    时间: 2011-4-2 03:20 AM
哇..楼主...看你这样 读IT的出路好像很艰难.... 我正好想去南方读it的 = =
虽然很喜欢...但读完出来找不到工就头大了... 毕竟以后还有一个家要养啊...现实啊~ .读出来工钱不高 就要吃草了

头痛
作者: 宅男-兜着走    时间: 2011-4-2 08:07 AM
哇..楼主...看你这样 读IT的出路好像很艰难.... 我正好想去南方读it的 = =
虽然很喜欢...但读完出来找不到 ...
NC7 发表于 2011-4-2 03:20 AM



    你好。。。 因为新加坡对员工的挑选很严格。
    一方面我也是 贱骨头来的。。。
    不喜欢太过平坦的人生。

    IT 读出来多方面的, 不怕找不到工作, 你拿文凭应征做 Sale 的 还是什么都行。
    我这里 2 ~ 3  位同事也是 读了直接投身做Sale的职位。 然后现在是 Supervisor 了。
作者: alfred1030    时间: 2011-4-2 01:37 PM
很深奥的感觉。。保留先。。。
作者: ~Zero    时间: 2011-4-4 09:48 PM
我今天才刚开始上班。
我公司的 HR 跟我说他们还要请人,
有兴趣的话可以试试来面试。不过要有心理准备,
他们出 offer letter 很久很久的,因为是大公司,超级无敌霹雳大的公司,
大大大大老板签名很多笔画要签很多个月。
作者: 宅男-兜着走    时间: 2011-4-4 10:06 PM
回复 80# ~Zero


    大大,地点。
作者: ~Zero    时间: 2011-4-5 12:04 PM
petaling jaya
作者: 宅男-兜着走    时间: 2011-4-5 01:05 PM
petaling jaya
~Zero 发表于 2011-4-5 12:04 PM



    就知道。 对我来说太过远了。
作者: abc.mango    时间: 2011-4-11 05:52 PM
哇~interview原来还要做那么多考题的阿?那jb的也是要咯?
我毕业1年多了~最近想做回本行~可是coding全忘完了~
作者: 宅男-兜着走    时间: 2011-4-11 07:44 PM
回复 84# abc.mango


    新山也是要, 尤其是 Software 业的。
    最近去一间也是有考几个 SQL题目, 紧张起来答到乱七八糟。
   
    不过很幸运的是录取了。
作者: abc.mango    时间: 2011-4-11 11:30 PM
回复  abc.mango


    新山也是要, 尤其是 Software 业的。
    最近去一间也是有考几个 SQL题目,  ...
宅男-兜着走 发表于 2011-4-11 07:44 PM

蛤~真的要的阿~那问题都是basic的吗?
恭喜你啦 你做programmer?
作者: 宅男-兜着走    时间: 2011-4-11 11:32 PM
回复 86# abc.mango


    其实说真的, 我不明白Basic 的定义
    换句话说, 每个人都Basic 的定义都不同。
   
    就看你会到哪里, 就答到哪里。
    每个公司录取人需求都各不相同。


    没错, 是被录取当Programmer 啦, 不过是小的




欢迎光临 JBTALKS.CC (https://www.jbtalks.cc/) Powered by Discuz! X2.5