我正在寻找您可能在面试中被问到或被要求代表您的工作或教育的伪代码问题的示例。我不是特别想从任何领域寻找示例,因此它可能与设计模式,算法,数据结构,缓存策略,与软件工程和开发有关的任何事情都很简单或复杂。
例如,我发现的一些常见的主要与排序和搜索技术有关:
procedure bubbleSort( A : list of sortable items ) defined as:
do
swapped := false
for each i in 0 to length(A) - 2 inclusive do:
if A[i] > A[i+1] then
swap( A[i], A[i+1] )
swapped := true
end if
end for
while swapped
end procedure
insertionSort(array A)
begin
for i := 1 to length[A]-1 do
begin
value := A[i];
j := i - 1;
done := false;
repeat
if A[j] > value then
begin
A[j + 1] := A[j];
j := j - 1;
if j < 0 then
done := true;
end
else
done := true;
until done;
A[j + 1] := value;
end;
end;
BinarySearch(A[0..N-1], value, low, high) {
if (high < low)
return -1 // not found
mid = low + ((high - low) / 2)
if (A[mid] > value)
return BinarySearch(A, value, low, mid-1)
else if (A[mid] < value)
return BinarySearch(A, value, mid+1, high)
else
return mid // found
}
如果很多人分享他们的想法和经验,我们或许可以建立一个像样的伪代码算法和问题列表。
我正在寻找自己的伪代码表示,作为练习。所以即使你找不到伪代码的例子,但你认为用这种方式表示它是一个理想的概念,那也会有所帮助。
我也有一些与这个问题有关的问题:
由于
编辑:
我发现的一些例子,我会继续编辑,因为我发现了更多:
编写一个函数,该函数使用单个字符串来反转句子中单词的顺序,而不是反转单词:
输入:“猫坐在垫子上,还有另一只猫!”
输出:“猫!另一个带垫子,就坐着的猫”
编写一个函数,该函数接受一个字符串,该字符串将返回该字符串中最常出现的单词,忽略大小写和标点符号。如果多个单词出现次数相同,则返回先发生的单词:
输入:“猫坐在垫子上,还有另一只猫!”
输出:
编写一个函数来查找某个字符串中出现次数最多的字符,忽略大小写。如果存在多个具有相同最高出现次数的字符,则返回字符串中首先出现的字符。
输入:“字符”
输出:c
编写一个反转字符串的函数
输入:“反向”
输出:“esrever”
答案 0 :(得分:3)
我还没有被问过,但有经典的FizzBuzz问题。
编写一个程序,打印从1到100的数字。但是对于三个打印的“Fizz”而不是数字的倍数和五个打印“Buzz”的倍数。对于三和五的倍数的数字打印“FizzBuzz”。
在http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html
处找到这是一个简单的筛选问题,即使是非常新的程序员也不会造成任何重大困难。
答案 1 :(得分:1)
我从来没有被要求在面试中使用伪代码(仍然是学生),但我的一位朋友申请谷歌暑期工作被要求编写一个可以处理子集的正则表达式解析器regexps(iirc,仅限字母数字输入并使用*,+和{x,y}表示法)。我正考虑自己明年申请暑期工作,并且害怕尝试在XD现场写这样的东西。
我相信他使用两个相互递归的函数解决了它。不确定如何。
哦,他不仅被要求为此编写伪代码,顺便说一句。他被要求在现场编写可以编译的实际C ++代码。 (在Google文档文档中也是如此)。
答案 2 :(得分:1)
几年前,我在一次实习面试中被要求为此编写一个伪代码解决方案:
编写一个算法,在给定目录路径的情况下,该算法可以计算属于该目录和所有子目录的文件总数。
能够解决这个问题表明了对树遍历的理解。
答案 3 :(得分:0)
我花了很长时间才弄明白,但这是我的Excel VBA解决句子逆转问题的解决方案。
Public Sub SentenceReverse()
Dim InSentence As String 'Input sentence string
Dim OutSentence As String 'Output sentence string
Dim p As Integer 'Word Start
Dim q As Integer 'Word length
p = 1
InSentence = ActiveSheet.Range("A1").Value 'Assign the sentence to a string
For i = 2 To Len(InSentence) + 1 'Loop through all the characters of the input sentence
If (Mid(InSentence, i, 1) = " " Or i = Len(InSentence) + 1) Then 'This character is a space or this is the the end of the sentence
q = i - p 'Set the word length to the number of this position minus the position of the start of this word
OutSentence = Mid(InSentence, p, q) & " " & OutSentence 'Add this word to the start of the output string
p = i + 1 'Set the start of the next word as the position of this space + 1
End If
Next i
MsgBox (OutSentence)
End Sub
答案 4 :(得分:0)
我不知道这是否是最优雅的方法,但这是找到最常出现的词的解决方案。这就是我接触它的方式。
循环遍历count数组,并将每个字段中的值与到目前为止找到的最大值进行比较。这给出了最大数量,因此也是最常用的单词。输出那个词。
Public Sub FindCommonWord()
Dim Insentence As String Dim WordArray()As String Dim CountArray()As Integer Dim p As Integer&#39; Word Start Dim q As Integer&#39;字长 Dim w As Integer&#39;字数 Dim tw As String&#39;这个词 Dim R As Integer&#39;最常用词的位置
p = 1 w = 1
Insentence = ActiveSheet.Range(&#34; A1&#34;)。值&#39;将句子分配给字符串
&#39;遍历所有字符并计算字数 对于h = 2到Len(Insentence)+ 1&#39;循环输入句子的所有字符 如果(Mid(Insentence,h,1)=&#34;&#34;或者h = Len(Insentence)+ 1)那么&#39;这个字符是一个空格或者这是句子的结尾 w = w + 1 万一 接下来h
w = w - 1
ReDim WordArray(w) ReDim CountArray(w)
w = 1 &#39;遍历所有字符并将字分配给数组的元素 对于i = 2到Len(Insentence)+ 1&#39;循环输入句子的所有字符 如果(Mid(Insentence,i,1)=&#34;&#34;或i = Len(Insentence)+ 1)那么&#39;这个字符是一个空格或者这就是句子的结尾 q = i - p&#39;将字长设置为该位置的编号减去该字开头的位置 WordArray(w)= Mid(Insentence,p,q) p = i + 1&#39;下一个单词的位置 w = w + 1&#39;下一个字 万一 下一个我 w = w - 1&#39;到达最后一个字
&#39;循环遍历数组以处理每个单词 对于j = 1到w &#39;循环遍历数组并计算该单词出现的次数 对于k = 1到w 如果UCase(WordArray(k))= UCase(WordArray(j))则CountArray(j)= CountArray(j)+ 1 下一个k 下一个j
R = 1
&#39;查找count数组中的最大值 对于n = 1到w 如果CountArray(n)&gt; R然后R = n 下一个 MsgBox(&#34;最常见的词是&#34;&amp; WordArray(R)&amp;&#34;位置&#34;&amp; R&amp;&#34;。&#34;)
End Sub