国产成人做受免费视频-国产成在线观看免费视频-国产传媒在线播放-国产传媒在线观看-欧美一区二区三区不卡免费观看-欧美一区二区三区不卡片

所在位置:大風車考試網 > 招聘筆試題 > 正文

百度技術研發筆試題和面試題答案目

2024-06-04 06:42:43 大風車考試網

  百度面試筆試題目大全

  * 有一根27厘米的細木桿,在第3厘米、7厘米、11厘米、17厘米、23厘米這五個位置上各有一只螞蟻。

  * 木桿很細,不能同時通過一只螞蟻。開始 時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,

  * 但不會后退。當任意兩只螞蟻碰頭時,兩只螞蟻會同時調頭朝反方向走。假設螞蟻們每秒鐘可以走一厘米的距離。

  * 編寫程序,求所有螞蟻都離開木桿 的最小時間和最大時間。

  *

  *

  * 分析:題目中的螞蟻只可能相遇在整數點,不可以相遇在其它點,比如3.5cm處之類的,也就是可以讓每只螞蟻走 1秒,然后

  * 查看是否有相遇的即可.

  *

  * 這樣我的程序實現思路就是,初始化5只螞蟻,讓每只螞蟻走1秒,然后看是否有相遇的,如果有則做相應處理.當每只螞蟻都

  * 走出木桿時,我就記錄當前時間.這樣就可以得到當前狀態情況下,需要多久可以走出木桿,然后遍歷所有狀態則可以得到所胡

  * 可能.

  */

  package baidu;

  public class Ant {

  /*

  * step 表示螞蟻每一個單位時間所走的長度

  */

  private final static int step = 1;

  /*

  * position表示螞蟻所處的初始位置

  */

  private int position;

  /*

  * direction表示螞蟻的前進方向,如果為1表示向27厘米的方向走, 如果為-1,則表示往0的方向走。

  */

  private int direction = 1;

  /*

  * 此函數運行一次,表示螞蟻前進一個單位時間,如果已經走下木桿則會拋出異常

  */

  public void walk() {

  if (isOut()) {

  throw new RuntimeException("the ant is out");

  }

  position = position + this.direction * step;

  };

  /*

  * 檢查螞蟻是否已經走出木桿,如果走出返回true

  *

  */

  public boolean isOut() {

  return position <= 0 || position >= 27;

  }

  /*

  * 檢查此螞蟻是否已經遇到另外一只螞蟻

  * @param ant

  * @return 如果遇到返回true

  */

  public boolean isEncounter(Ant ant) {

  return ant.position == this.position;

  }

  /*

  * 改變螞蟻的前進方向

  */

  public void changeDistation() {

  direction = -1 * direction;

  }

  /*

  * 構造函數,設置螞蟻的初始前進方向,和初始位置

  * @param position

  * @param direction

  */

  public Ant(int position, int direction) {

  this.position = position;

  if (direction != 1) {

  this.direction = -1;//方向設置初始位置,比如為0時,也將其設置為1.這樣可以方便后面的處理

  } else {

  this.direction = 1;

  }

  }

  }

  /////////////////////////////////////////////////////////

  package baidu;

  public class Controller {

  public static void main(String[] args) {

  int time = 0;

  for (int i = 0; i < 32; i++) {

  Ant[] antArray = getAntList(getPoistions(), getDirections(i));

  while (!isAllOut(antArray)) {

  for (Ant ant : antArray) {

  if (!ant.isOut()) {

  ant.walk();

  }

  }

  time++;

  // 查看是否有已經相遇的Ant,如果有則更改其前進方向

  dealEncounter(antArray);

  }

  System.out.println(time);

  // 將時間歸0,這樣可以重新設置條件,再次得到全部走完所需要的時間.

  time = 0;

  }

  }

  /*

  * 這個函數的算法很亂,但暫時能解決問題

  *

  * @param list

  */

  public static void dealEncounter(Ant[] antArray) {

  int num_ant = antArray.length;

  for (int j = 0; j < num_ant; j++) {

  for (int k = j + 1; k < num_ant; k++) {

  if (antArray[j].isEncounter(antArray[k])) {

  antArray[j].changeDistation();

  antArray[k].changeDistation();

  }

  }

  }

  }

  /*

  * 因為有5只Ant,所以組合之后有32種組合.剛好用5位二進制來表示,如果為0則表示Ant往0的方向走 如果為1,則表示往27的方向走

  *

  * 注:在通過Ant的構造函數設置初始值時,通過過濾把0修改成了-1.

  */

  public static int[] getDirections(int seed) {

  int result[] = new int[5];

  result[0] = seed % 2;

  result[1] = seed / 2 % 2;

  result[2] = seed / 4 % 2;

  result[3] = seed / 8 % 2;

  result[4] = seed / 16 % 2;

  System.out.println("directions is " + result[0] + "|" + result[1] + "|"

  + result[2] + "|" + result[3] + "|" + result[4]);

  return result;

  }

  /*

  * 批量設置Ant的初始位置,這樣設置不是十分必要,可以直接在代碼中設置

  *

  * @return

  */

  public static int[] getPoistions() {

  return new int[] { 3, 7, 11, 17, 23 };

  }

  /*

  * 取得設置好初始值的5只Ant

  *

  * @param positions

  * @param directions

  * @return

  */

  public static Ant[] getAntList(int[] positions, int[] directions) {

  Ant ant3 = new Ant(positions[0], directions[0]);

  Ant ant7 = new Ant(positions[1], directions[1]);

  Ant ant11 = new Ant(positions[2], directions[2]);

  Ant ant17 = new Ant(positions[3], directions[3]);

  Ant ant23 = new Ant(positions[4], directions[4]);

  return new Ant[] { ant3, ant7, ant11, ant17, ant23 };

  }

  /*

  * 判斷是否所有的Ant都已經走出了木桿,也就是設置退出條件

  *

  * @param antArray

  * @return

  */

  public static boolean isAllOut(Ant[] antArray) {

  for (Ant ant : antArray) {

  if (ant.isOut() == false) {

  return false;

  }

  }

  return true;

  }

  }

  編程:

  用C語言實現一個revert函數,它的功能是將輸入的字符串在原串上倒序后返回。

  2 編程:

  用C語言實現函數void * memmove(void *dest,const void *src,size_t n)。memmove

  函數的功能是拷貝src所指的內存內容前n個字節

  到dest所指的地址上。

  3 英文拼寫糾錯:

  在用戶輸入英文單詞時,經常發生錯誤,我們需要對其進行糾錯。假設已經有一個包

  含了正確英文單詞的詞典,請你設計一個拼寫糾錯

  的程序。

  (1)請描述你解決這個問題的思路;

  (2)請給出主要的處理流程,算法,以及算法的復雜度;

  (3)請描述可能的改進(改進的方向如效果,性能等等,這是一個開放問題)。

  4 尋找熱門查詢:

  搜索引擎會通過日志文件把用戶每次檢索使用的所有檢索串都記錄下來,每個查詢串

  的長度為1-255字節。假設目前有一千萬個記錄,

  這些查詢串的重復度比較高,雖然總數是1千萬,但如果除去重復后,不超過3百萬個

  。一個查詢串的重復度越高,說明查詢它的用戶越多,

  也就是越熱門。請你統計最熱門的10個查詢串,要求使用的內存不能超過1G。

  (1)請描述你解決這個問題的思路;

  (2)請給出主要的處理流程,算法,以及算法的復雜度。

  5 集合合并:

  給定一個字符串的集合,格式如:

  {aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}

  要求將其中交集不為空的集合合并,要求合并完成后的集合之間無交集,例如上例應

  輸出

  {aaa bbb ccc ddd hhh},{eee fff}, {ggg}

  (1)請描述你解決這個問題的思路;

  (2)請給出主要的處理流程,算法,以及算法的復雜度

  (3)請描述可能的改進(改進的方向如效果,性能等等,這是一個開放問題)。

  ////////////////////////////////1

  1 題

  char *revert(char * str)

  {

  int n=strlen(str);

  int i=0;

  char c;

  for(i=0;i

  {

  c=str;

  str=str[n-i];

  str[n-i]=c;

  }

  return str;

  }

  ///////////////////////////////////

  2 題

  void * memmove(void *dest,const void *src,size_t n)

  {

  assert((dest!=0)&&(src!=0));

  char * temp=(char * )dest;

  char * ss=(char * )src;

  int i=0;

  for(;i

  {

  *temp++=*ss++;

  }

  return temp;

  }

  /////////////////////////////////////////////////

  3 題

  (1)思路 :

  字典以字母鍵樹組織,在用戶輸入同時匹配

  (2)

  流程:

  每輸入一個字母:

  沿字典樹向下一層,

  a)若可以順利下行,則繼續至結束,給出結果;

  b)若該處不能匹配,糾錯處理,給出拼寫建議,繼續至a);

  算法:

  1.在字典中查找單詞

  字典采用27叉樹組織,每個節點對應一個字母,查找就是一個字母

  一個字母匹配.算法時間就是單詞的長度k.

  2.糾錯算法

  情況:當輸入的最后一個字母不能匹配時就提示出錯,簡化出錯處理,動態提示

  可能 處理方法:

  (a)當前字母前缺少了一個字母:搜索樹上兩層到當前的匹配作為建議;

  (b)當前字母拼寫錯誤:當前字母的鍵盤相鄰作為提示;(只是簡單的描述,可

  以有更多的)

  根據分析字典特征和用戶單詞已輸入部分選擇(a),(b)處理

  復雜性分析:影響算法的效率主要是字典的實現與糾錯處理

  (a)字典的實現已有成熟的算法,改進不大,也不會成為瓶頸;

  (b)糾錯策略要簡單有效 ,如前述情況,是線性復雜度;

  (3)改進

  策略選擇最是重要,可以采用統計學習的方法改進。

  //////////////////////////////////////////////

  4 題

  (1)思路:

  用哈希做

  (2)

  首先逐次讀入查詢串,算哈希值,保存在內存數組中,同時統計頻度

  (注意值與日志項對應關系)

  選出前十的頻度,取出對應的日志串,簡單不過了。

  哈希的設計是關鍵。

  //////////////////////////////////////////////////

  5 題

  (1)思路:先將集合按照大小排列后,優先考慮小的集合是否與大的集合有交集。有

  就合并,如果小集合與所有其他集合都沒有交集,則獨立。獨立的集合在下一輪的比

  較中不用考慮。這樣就可以盡量減少字符串的比較次數。當所有集合都獨立的時候,

  就終止。

  (2)處理流程:

  1.將集合按照大小排序,組成集合合并待處理列表

  2.選擇最小的集合,找出與之有交集的集合,

  如果有,合并之;

  如果無,則與其它集合是獨立集合,從待處理列表 中刪除。

  3.重復直到待處理列表為空

  算法:

  1。將集合按照大小從小到大排序,組成待處理的集合列表。

  2。取出待處理集合列表中最小的集合,對于集合的每個元素,依次在其他集合中搜索

  是否有此元素存在:

  1>若存在,則將此小集合與大集合合并,并根據大小插入對應的位置 。轉3

  。

  2>若不存在,則在該集合中取下一個元素。如果無下一個元素,即所有元素

  都不存在于其他集合。則表明此集合獨立,從待處理集合列表中刪除。并加入結果集

  合列表。轉3。

  3。如果待處理集合列表不為空,轉2。

  如果待處理集合列表為空,成功退出,則結果集合列表就是最終的輸出。

  算法復雜度分析:

  假設集合的個數為n,最大的集合元素為m

  排序的時間復雜度可以達到n*log(n)

  然后對于元素在其他集合中查找,最壞情況下為(n-1)*m

  查找一個集合是否與其他集合有交集的最壞情況是m*m*(n-1)

  合并的時間復雜度不會超過查找集合有交集的最壞情況。

  所以最終最壞時間復雜度為O(m*m*n*n)

  需要說明的是:此算法的均時間復雜度會很低,因為無論是查找還是合并,都是處于最壞情況的概率很小,而且排序后優先用最小集合作為判斷是否獨立的對象,優先與最大的集合進行比較,這些都最大的回避了最壞情況。

  (3)可能的改進:

  首先可以實現將每個集合里面的字符串按照字典序進行排列,這樣就可以將查找以及合并的效率增高。另外,可能采取恰當的數據結構也可以將查找以及合并等操作的效率得到提高。

  • 相關文章
  • Java軟件開發工程師筆試題和面試題答案寶典Java軟件開發工程師筆試題和面試題答案寶典

    1、了解j2EE規范,選擇幾點進行重點消化。 2、異常分類,一般性異常和運行期異常,異常捕獲。 3、了解springmvc框架,和strutsmvc框架的區別。 4..

    2024-06-04 16:29:33
  • .net軟件工程師筆試題和面試題答案目.net軟件工程師筆試題和面試題答案目

    說明: 1.本試題分可選題和必選題兩部分。必選題需要根據題目要求回答。 2.本試題考試時間為0.5小時。 3.本試題完成后,請標明你的姓名以及聯..

    2024-05-28 22:48:22
  • 新大陸軟件筆試題和面試題答案目新大陸軟件筆試題和面試題答案目

    如下分享的新大陸軟件筆試題目,你能做對多少呢?一、基本情況: 1、從事開發工作_____年? 2、是否是DBA? 3、目前崗位? 4、所做項目介紹。 ..

    2024-05-29 14:04:06
  • Java軟件開發工程師筆試題和面試題答案寶典Java軟件開發工程師筆試題和面試題答案寶典

    1、了解j2EE規范,選擇幾點進行重點消化。 2、異常分類,一般性異常和運行期異常,異常捕獲。 3、了解springmvc框架,和strutsmvc框架的區別。 4..

    2024-06-04 16:29:33
  • .net軟件工程師筆試題和面試題答案目.net軟件工程師筆試題和面試題答案目

    說明: 1.本試題分可選題和必選題兩部分。必選題需要根據題目要求回答。 2.本試題考試時間為0.5小時。 3.本試題完成后,請標明你的姓名以及聯..

    2024-05-28 22:48:22
  • 新大陸軟件筆試題和面試題答案目新大陸軟件筆試題和面試題答案目

    如下分享的新大陸軟件筆試題目,你能做對多少呢?一、基本情況: 1、從事開發工作_____年? 2、是否是DBA? 3、目前崗位? 4、所做項目介紹。 ..

    2024-05-29 14:04:06
  • 河北新聞網兩學一做知識競賽(試題+答案完整版)河北新聞網兩學一做知識競賽(試題+答案完整版)

    2016河北新聞網兩學一做知識競賽開賽啦,快來圍觀吧。活動內容為推動“兩學一做”學習教育深入開展,省委宣傳部、省委組織部組織開展“兩學一做”知識競賽活動,河北?.

    2024-06-04 02:17:24
  • 河北新聞網兩學一做知識競賽活動試題答案河北新聞網兩學一做知識競賽活動試題答案

    2016年河北新聞網兩學一做知識競賽活動試題答案為推動“兩學一做”學習教育深入開展,省委宣傳部、省委組織部組織開展“兩學一做”大型知識競賽。此項活動由河北新聞?.

    2024-06-06 02:19:48
  • 2025年兩學一做學習教育知識競賽活動10篇2025年兩學一做學習教育知識競賽活動10篇

    為隆重紀念中國共產黨建黨95周年,推進我市“兩學一做”學習教育深入開展,推動廣大黨員干部認真學好黨章黨規和*系列重要講話,現將“兩學一做”學習教育知識競賽題予..

    2024-05-31 08:40:33
  • 開展兩學一做學習教育知識競賽活動真題答案開展兩學一做學習教育知識競賽活動真題答案

    144.根據《中國共產黨紀律處分條例》規定,黨的各級代表大會的代表受到(D)處分的,黨組織應當終止其代表資格。A.警告(含)以上B.嚴重警告(含)以上C.撤銷黨內職務(含)以..

    2024-05-27 03:14:20
主站蜘蛛池模板: 欧美精品在线看 | 国产一级特黄a大片免费 | 视频国产91 | 精品欧美一区二区三区四区 | 免费大片黄在线观看日本 | 亚洲尹人九九大色香蕉网站 | 黄色毛片一级片 | 动漫精品一区二区3d | 香蕉视频在线观看男女 | 国产成人精品亚洲 | 欧美午夜视频一区二区三区 | 欧美一区日韩一区中文字幕页 | 狠狠天天 | 操一操日一日 | 999热成人精品国产免 | 手机看黄av免费网址 | 国产成人在线免费观看 | 性满足久久久久久久久 | 国产色在线com | 亚洲黄色片一级 | 四虎影院免费观看 | 日韩精品中文字幕一区二区三区 | 国产精品久久久久久久久 | 免费羞羞网站视频 | 九九热这里有精品 | 韩国特级一级毛片免费网站 | 久久精品视频观看 | 中文字幕avv | 国产成人精品一区二三区在线观看 | 日韩亚洲天堂 | 直接观看黄网站免费视频 | 免费黄色网页 | 欧美香蕉| 国内自拍偷拍 | 黄色在线观看国产 | 经典三级一区二区三区视频 | 欧美日韩欧美日韩 | 九九热视频在线免费观看 | 日本www色| 久草成人 | 欧美日韩中文国产va另类 |