我对另一个问题的回答感到困惑,这个问题说你不应该把代码组合带到编程工作面试中.
为什么不呢?其他人推荐这个; 它甚至是Peopleware中的"经典"故事之一:
"如果没有首先看到他表演,就会想到聘请一个变戏法者,这是荒谬的.这只是常识.然而,当你开始聘请工程师或设计师或程序员或团队经理时,常识规则经常被暂停.你不要求看设计或程序或任何东西.事实上,采访只是谈话."
那么,是什么给出的?当你出现代码组合时出现什么问题的"战争故事"?或者当你采访有一个候选人时?
找出notepad.exe和mspaint.exe在各种版本的Windows中可以使用的最佳方法是什么?
我应该通过SHGetFolderPath(NULL, CSIDL_WINDOWS, NULL, SHGFP_TYPE_CURRENT, dir),然后遍历所有子目录来查找这两个文件吗?
(假设我对Windows文件夹以外的任何内容都不感兴趣.)
这个问题的动机是我最近开始看到的有点过于if..else if..else结构的东西.虽然它很简单并且有其用途,但它的一些东西不断告诉我它可以用更精细,优雅和通常更容易保持最新的东西代替.
为了尽可能具体,这就是我的意思:
if (i == 1) {
doOne();
} else if (i == 2) {
doTwo();
} else if (i == 3) {
doThree();
} else {
doNone();
}
Run Code Online (Sandbox Code Playgroud)
我可以想到两种简单的方法来重写它,或者通过三元(这只是编写相同结构的另一种方式):
(i == 1) ? doOne() :
(i == 2) ? doTwo() :
(i == 3) ? doThree() : doNone();
Run Code Online (Sandbox Code Playgroud)
或使用Map(在Java中,我认为在C#中)或字典或任何其他K/V结构,如下所示:
public interface IFunctor() {
void call();
}
public class OneFunctor implemets IFunctor() {
void call() {
ref.doOne();
}
}
/* etc. */
Map<Integer, IFunctor> methods = new …Run Code Online (Sandbox Code Playgroud) 有关磁刷卡的常规存储容量的任何想法(如在ATM中使用的那些)?
(PS:尝试使用Google搜索,但没有得到任何满意的结果并指出)
我目前正在使用CSS和Div标签的组合来实现文本元素的圆角.这是我正在使用的CSS:
div#installerSearch {
float: left;
position: relative;
color: #000055;
width: 154px;
border: 1px solid #2A5390;
padding: 8px;
background-image: url('images/background.png');
}
div.roundAllGreen {
position: absolute;
width: 8px;
height: 8px;
background-image: url('images/roundgreenthingy.png');
}
div.roundTopLeft {
left: -1px;
top: -1px;
background-position: 0px 0px;
}
div.roundTopRight {
right: -1px;
top: -1px;
background-position: -7px 0px;
}
div.roundBottomLeft {
left: -1px;
bottom: -1px;
background-position: 0px -7px;
}
div.roundBottomRight {
right: -1px;
bottom: -1px;
background-position: -7px -7px;
}
Run Code Online (Sandbox Code Playgroud)
这是结果HTML:
<div id="installerSearch">
<div class="roundAll roundTopLeft"></div>
<div class="roundAll roundTopRight"></div> …Run Code Online (Sandbox Code Playgroud) 我想要克隆一个List你只需要调用:
List<int> cloneList = new List<int>(originalList);
Run Code Online (Sandbox Code Playgroud)
但是我在我的代码中尝试了这一点,我似乎得到的效果暗示上面只是在做:
cloneList = originalList ...因为对cloneList的更改似乎正在影响originalList.
那么克隆List的方法是什么?
编辑:
我在考虑做这样的事情:
public static List<T> Clone<T>(this List<T> originalList) where T : ICloneable
{
return originalList.ConvertAll(x => (T) x.Clone());
}
Run Code Online (Sandbox Code Playgroud)
EDIT2:
我拿了Binoj Antony建议的深拷贝代码并创建了这个扩展方法:
public static T DeepCopy<T>(this T original) where T : class
{
using (MemoryStream memoryStream = new MemoryStream())
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, original);
memoryStream.Seek(0, SeekOrigin.Begin);
return (T)binaryFormatter.Deserialize(memoryStream);
}
}
Run Code Online (Sandbox Code Playgroud)
EDIT3:
现在,假设列表中的项目是结构.如果我打电话会怎么样?:
List<StructType> cloneList = new List<StructType>(originalList);
Run Code Online (Sandbox Code Playgroud)
我非常肯定,我会得到一个填充了新的独特项目的列表,对吗?
我对Flex的Dictionary(实际上只是一个带字符串索引的数组)越来越感到沮丧.
琐碎的事情似乎是不可能的,比如获取最后一个元素,或者甚至根据键遍历已排序的容器(顺序似乎是任意的),并且如果给出带有字符串的数组,则排序函数似乎会弄乱所有内容指数.
Flex有更好,更完整的容器库吗?有数组,列表,队列,地图,多图,哈希映射等的东西?
我正在努力学习如何最好地使用Cucumber + Selenium.在大多数情况下,它似乎非常直接,但我想得到一些如何测试对话框的指导.基本上我需要实现:
assert !60.times{
break if ("Other Income" == @selenium.get_text("//form[@id='new_account']/h3") rescue false); sleep 1 }
Run Code Online (Sandbox Code Playgroud)
标准等待表格.我如何在黄瓜规格中实现这一目标?
多态如何在循环中替换if-else语句或Switch?特别是它总能取代if-else?我在循环中使用的大多数if-thens都是算术比较.这个问题是从这个问题中产生的.
int x;
int y;
int z;
while (x > y)
{
if (x < z)
{
x = z;
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用多态?
注意:我用Java编写了这个,但我对任何OOL感兴趣.
静态类和单例模式之间存在什么真实(即实际)差异?
两者都可以在没有实例化的情况下调用,两者都只提供一个"实例",它们都不是线程安全的.还有其他区别吗?
.net ×1
apache-flex ×1
c# ×1
css ×1
cucumber ×1
data-storage ×1
filepath ×1
filesystems ×1
html ×1
if-statement ×1
loops ×1
oop ×1
polymorphism ×1
portfolio ×1
search ×1
selenium ×1
singleton ×1
static ×1
winapi ×1