面试话题讨论题

有些事情非常非常非常非常重要。 例如John Cleese 。

对于空白也是如此:



空格脱落

是。 仅23小时即可获得1080点Reddit Karma积分(非常需要!)。 这比我们曾经错误地想到的关于Java和SQL的任何深刻而有趣的技术见解都好几个数量级。

有趣的话题是关于以下内容的幽默论文:

for (int i=0; i<LENGTH; i++)

… 或这个:

for (int i = 0; i < LENGTH; i++)

…应该是首选。 显然,这两种选择都是完全错误的。 正确的答案是:

for 
(   int i = 0
;   i < LENGTH
;   i++
)

在这里阅读全文 。

但是在某些时候,空白讨论变得过时了。 我们需要讨论非常非​​常重要的新主题,而不是解决它们。 毕竟,周末迫在眉睫,我们不知道该说些什么。

这就是为什么我们现在要发布…

十大非常非常重要的话题需要讨论

开始了…

0.空格

好的,这很容易。 我们已经有了。 想参加吗? 关于Reddit的非常有趣的讨论仍然很热门 。

1.计算机科学的越南

如果您没有听说过这个非常有趣的讨论,那么有些人认为ORM已经过时了 ,因为ORM不能按承诺工作。 他们是完全正确的。 最好的事情是, 其他所有人也完全正确

为什么这么好? 因为那意味着我们开始讨论它。 不休!

尽管每个人都在谈论这样的ORM,但没人关心Gavin King( Hibernate的创建者)从一开始就说过的话:

加文·金(Gavin King)在《冬眠》上–没有人听过这个可怜的人

我们为什么要关心他的意见? 我们有自己独特的意见! 让我们再讨论一下为什么ORM有害!

2.区分大小写

不幸的是,我们Java的人们无法进行关于大小写的任何非常非常非常重要的讨论,因为不幸的是,Java是区分大小写的语言。

但是,请使用SQL(或PL / SQL,T-SQL)。 在编写SQL时,我们可以就是否应该进行很棒的讨论:

-- Upper case it all
SELECT TAB.COL1, TAB.COL2 FROM TAB

-- Upper case keywords, lower case identifiers
SELECT tab.col1, tab.col2 FROM tab

-- Lower case keywords, upper case identifiers
select TAB.COL1, TAB.COL2 from TAB

-- Lower case it all
select tab.col1, tab.col2 from tab

-- Add some PascalCase (awesome SQL Server!)
SELECT Tab.Col1, Tab.Col2 FROM Tab

-- Mix case-sensitivity with case-insensitivity
-- (Protip to piss off your coworkers: Name your
-- table "FROM" or "INTO" and let them figure out
-- how to query that table)
SELECT TAB."COL1", TAB."col2" FROM "FROM"

-- PascalCase keywords (wow, MS Access)
Select TAB.COL1, TAB.COL2 From TAB

现在,这真的非常有趣。 而且因为这是如此有趣且重要,所以您只能想象我们在jOOQ用户组上进行过的有趣讨论,例如,有关如何从数据库中最佳生成元数据的讨论。 使用jOOQ,我们保证您可以通过覆盖代码生成器的默认行为, 将这些引人入胜的讨论从SQL区域扩展到Java区域 :

  • 应该将类设为PascalCased,将文字设为UPPER_CASED吗?
  • 是否应该像Java一样对PascalCased和camelCased进行所有操作?
  • 是否应该按照数据库中的名称生成所有内容?

无休止的有趣讨论!

我们对SQL大小写有很多选择,这使我们能够

3. SQL格式

与C风格的通用语言(例如C,Java,Scala,C#或什至是大量使用关键字的Delphi,Pascal,Ada)不同,SQL具有众多讨论的绝佳基础。 它不仅是大量关键字,而且还具有非常复杂且高度不规则的语法。 因此,我们很幸运能够(经过长期的讨论和解决)在以下各项之间进行选择:

-- All on one line. Don't tell me about print margins,
-- Or I'll telefax you my SQL!
SELECT table1.col1, table1.col2 FROM table1 JOIN table2 ON table1.id = table2.id WHERE id IN (SELECT x FROM other_table)

-- "Main" keywords on new line
SELECT table1.col1, table1.col2 
FROM table1 JOIN table2 ON table1.id = table2.id 
WHERE id IN (SELECT x FROM other_table)

-- (almost) all keywords on new line
SELECT table1.col1, table1.col2 
FROM table1 
JOIN table2 
ON table1.id = table2.id 
WHERE id IN (SELECT x FROM other_table)

-- "Main" keywords on new line, others indented
SELECT table1.col1, table1.col2 
FROM table1 
  JOIN table2 
  ON table1.id = table2.id 
WHERE id IN (
  SELECT x 
  FROM other_table
)

-- "Main" keywords on new line, others heavily indented
SELECT table1.col1, table1.col2 
FROM table1 JOIN table2 
              ON table1.id = table2.id 
WHERE id IN (SELECT x 
             FROM other_table)

-- Doge formatting
SUCH table1.col1,
                 table1.col2
    MUCH table1
JOIN table2 WOW table1.id
            = table2.id
WHICH              id IN
   (SUCH x

WOW other_table
            )


总督SQL格式

等等等等。 现在,任何项目经理都应在每个项目中至少保留10个工作周,以就SQL格式设置规则达成共识。

4. DBA结束

现在,这是一个非常有趣的话题,不仅对于精通生产系统的开发人员来说很有趣,对于操作团队来说也很有趣。 因为众所周知, DBA已死 ( 再次 )。

对于那些在这个非常有趣的主题上有所遗漏的人,要知道,所有这些都是(再次)在伟大的NoSQL vs. SQL辩论由才华横溢的头脑和真正替代系统的供应商发起的时候开始的。 现在开始实施SQL的是 ,因为,显然…… SQL并不是那么糟糕 :

根据NoSQL的历史@markmadsen #strataconf pic.twitter/XHXMJsXHjV

— Edd Dumbill(@edd) 2013年11月12日

请更多地讨论关于解决数据库问题的最佳且唯一的真正方法。 因为您的意见很重要!

5.新行和注释

还记得我们自己的博客文章,关于在新行中添加一些关键字吗? 是的,我们更喜欢:

// If this
if (something) {
    ...
}

// Else something else
else {
    ...
}

究竟。 因为这样可以将注释写在它们所属的位置:在适当的关键字旁边,并且始终在同一列对齐。 这就引出了下一个非常有趣的问题:我们是否应该在代码中添加注释? 还是干净的代码可以自我记录 ?

我们说,为什么会这样,我们当然应该发表评论。 到底有谁会记得这种事情背后的理由?

// [#2744] DB2 knows the SELECT .. FROM FINAL 
// TABLE (INSERT ..) syntax
case DB2:

// Firebird and Postgres can execute the INSERT 
// .. RETURNING clause like a select clause. JDBC
// support is not implemented in the Postgres JDBC
// driver
case FIREBIRD:
case POSTGRES: {
    try {
        listener.executeStart(ctx);
        rs = ctx.statement().executeQuery();
        listener.executeEnd(ctx);
    }
    finally {
        consumeWarnings(ctx, listener);
    }

    break;
}

摘自我们的“ hacking JDBC”页面 。

6. JSON完全优于XML

当然是的! 因为……因为……呃。 因为它允许我按层次结构构造数据。 等等...

我喜欢JSON。 它给人们提供了重新创建XML时代最愚蠢的想法的机会,但是使用花括号而不是尖括号。

—汤姆·莫里斯(@tommorris) 2014年7月21日

Dayum。

您是在说JSON和XML是同一件事!?

但是MongoDB和PostgreSQL允许我存储JSON。 等一下。 他们也尝试将XML存储在90年代的数据库中! 失败了吗? 好吧,它当然失败了,因为XML很烂,对吧? (这实际上是另一种说法,我从未理解过XSLT或XQuery或XPath或什至没有听说过XProc,而我只是对尖括号和名称空间感到愤怒)

让我们进一步讨论这个问题。 我觉得我们已经接近该主题的最终解决方案。

说到JSON…

7.花括号

我的天啊! 这是所有主题中最有趣的。 我们应该放开括号吗?

  • 在同一行?
  • 在新行上?
  • 根本没有括号???

正确的答案是1)和3)。 1)仅在我们绝对必须这样做时,例如在tryswitch语句中。 我们不需要支付代码行数,因此,我们不会仅使用大括号就添加无意义的行。 如果我们可以完全省略括号,那很好。 如果您问我,这是一个很棒的声明:

if (something)
    outer:
    for (String thing : list)
        inner:
        do
            if (somethingElse)
                break inner;
            else
                continue outer;
        while (true);

那应该教他们初级不要接触我的代码。 这使我们能够:

8.标签

他们没事。 我会在任何时候打破循环。 不要告诉我标签是Java所说的GOTO方式 ,它们比这要复杂得多。 (此外, goto是Java中的保留字,它是实际的字节码指令)。 因此,我会很高兴向前跳:

label: {
  // do stuff
  if (check) break label;
  // do more stuff
}

或我向后跳:

label: do {
  // do stuff
  if (check) continue label;
  // do more stuff
  break label;
} while(true);

(观察上面的示例如何使用两个空格而不是四个空格(或制表符)来缩进。另一个很好的话题,需要进一步讨论)

9. emacs vs. vim vs. vi vs. Eclipse vs. IntelliJ vs. Netbeans

请让我们再进行一次有趣的讨论,其中哪一个更好? 请!

10.最后但不是最少:Haskell是否比[您的语言]更好?

根据TIOBE ,Haskell排名38。

众所周知,任何编程语言的实际市场份额(在Haskell情况下绝对没有)与在Reddit上讨论该语言的重要性所花费的时间成反比,以及该语言如何完全优于该语言。例如,在TIOBE上面排名1-2。 就是Lua。

因此,我想邀请您加入下面的博客朋友,进行有关...的非常非常有趣的讨论。

  • 丹尼尔·里昂(Daniel Lyons)– Smalltalk,Haskell和Lisp
  • 约翰·威格利(John Wiegley)–你好,哈斯克尔,再见Lisp
  • J库珀– Haskell,Lisp和冗长
  • 也许我们可以迭代……s ***!
  • 罗伯特·史密斯(Robert Smith)– Lisp生产中的危险
  • 曼努埃尔·西蒙(Manuel Simon)–为什么Lisp是一个大黑客(而Haskell注定要成功)

现在,当然,我们可以enlargen辩论和深入研究为什么之前一般比较OO编程函数式编程Scala是不是一个函数式编程语言 , 更遑论的Java 8 。

哦,您认为您的Haskell或Lisp方言还不够好,所以您应该自己动手? 继续( 检查此清单之后! )

如此伟大的话题。 这么少的时间。

结论

这些社交网络(如Reddit,Hackernews和其他所有社交网络)的优点在于,我们终于可以整日讨论真正有趣的话题,而不是修复老板想要我们解决的无聊的bug。 毕竟,这很重要。

就像Randall Munroe所说的那样: “值班电话!”

进一步阅读

如果您现在热衷于讨论,请考虑阅读以下有关如何最佳设置格式和样式代码的有趣且有见地的文章:

  • 汤姆·威斯曼(Tom Wijsman)–大括号应该出现在自己的行上吗?
  • Michael Breen – Rational Java缩进和样式
  • Daniel W. Dyer –不,您的代码不是很好,不需要注释
  • 亚当·戴维斯(Adam Davis)–什么是自我记录代码,它可以代替记录良好的代码吗?
  • Carlo Pescio –您的编码约定正在伤害您
  • Jason Lengstorf –为什么您是不良PHP程序员
  • 理查德·罗杰(Richard Rodger)–为什么我放弃了编码标准
  • `break`和`continue`是不好的编程习惯吗?
  • Douglas Crockford – JavaScript编程语言的代码约定

或添加您自己的。 还有很多重要的事情要做!

翻译自: https://www.javacodegeeks/2014/08/top-10-very-very-very-important-topics-to-discuss.html

面试话题讨论题

更多推荐

面试话题讨论题_十大非常非常重要的话题需要讨论