目次
        一面:
        非代码题目:
       代码题目:
       1.数组中有一个出现次数超过数组一半的数字,请找出来这个数字
        题目2:双链表的删除操作
        二面:
        题目1:如何求出来一个数组的连续最大和
ホームページ データベース mysql チュートリアル 百度实习生面试(2013年12月2号)

百度实习生面试(2013年12月2号)

Jun 07, 2016 pm 03:19 PM
12月 インターン 百度 インタビュー

前一段时间面过百度商务搜索部门的软件开发实习生,面了3面,没有通过,还差的很远。百度对算法的要求还是比较高的,虽然时间过去了一段时间了,但是有些题目还是可以记起来。特此发篇博客,记录下内容,也以此激励自己,希望下次在去会有进步。 整个面试过

        

        前一段时间面过百度商务搜索部门的软件开发实习生,面了3面,没有通过,还差的很远。百度对算法的要求还是比较高的,虽然时间过去了一段时间了,但是有些题目还是可以记起来。特此发篇博客,记录下内容,也以此激励自己,希望下次在去会有进步。


        整个面试过程大概写了7 8 道程序题目把,脑袋都写大了。通过这次面试知道了有两个需要注意和锻炼的地方:


        1.在纸上写代码的能力。最好带支铅笔和橡皮过去,如果你字写的不好看,写的时候在涂涂画画修改下,会显得代码乱七八糟的,自己看着都觉得恶心。更别提面试官了。如果没有绝对的实力一遍写过,最好用铅笔和橡皮,错了还可以擦掉。


        2.在写代码的时候一定要特别注意某些边界条件的判断,尤其要小心。虽说不是什么大错误,但是被面试官发现的话是相当不好的。囧,自己发现了2处。譬如说我在写的时候犯的错误,双链表的最后一个节点的判断条件不是等于空,而是指向第一个头节点。


        好了,没有面过就继续努力,吸取下经验教训。继续往前走。下面记录下遇到的程序题目。


        一面:

        

        非代码题目:


        除了写代码之外问的都比较基础,譬如 虚函数  static关键字的作用, const 关键字的作用。(这里需要注意const的位置不同,代表的含义不同)。


       代码题目:

       

       1.数组中有一个出现次数超过数组一半的数字,请找出来这个数字


        这个题目算是比较常见的了, 在剑指offer上也出现过了,也给出了2种解法。

  

        解法1:基于partition函数的解法


        数组中的一个数字出现的次数超过数组的一半,那么排序后这个数组的中间的数字一定是这个出现了一半次数的数字。也就是数组的中位数。我们可以把问题简化到求数组  第 n/2大的数字。


        算法是受到快速排序算法的启发,在数组中随机选中一个数字,然后调整数组的顺序,使得比选中数组小的数字都在数字的左边,比选中的数字大的数字都在数字的右边。这个就是partition算法。如果这个选中的数字下标刚好是n/2,那么可以返回了,如果大于n/2,则中位数在他的左边,我们可以在左边的数组中查找。


        

#include <iostream>

using namespace std;
void Swap( int & x, int & y ){
    int temp = x;
    x = y;
    y = temp;
}
int partition ( int a[ ], int begin ,int  end ){
    int temp = a[ begin ];
    int i,j;
    i = begin;
    j = end;
    while( i = temp && i > 1;
    int start = 0;
    int end = length - 1;
    int partitionIndex = partition( numbers, start, end );
    while( partitionIndex != middle ){
        if( partitionIndex > middle ){
            end = partitionIndex - 1;
            partitionIndex = partition( numbers, start, end );
        }
        else{
            start = partitionIndex + 1;
            partitionIndex = partition( numbers, start, end );
        }
    }
    int result =  numbers[ middle ];
    if( !CheckMoreThanHalf( numbers, length, result ) )
        result = 0;
    return result;
}
int main()
{
    int num[ ] = {1,2,3,2,2,2,5,4,2};
    int result = MoreThanHalfNum( num, 9 );
    if( isInputInValid == true  ){
        if( result == 0)
            cout            <span> 在面试的时候,一定要处理参数的输入是否正确。譬如说本题目,需要考虑2点</span>
<p><span>        1.传入的数组退化成指针的时候是否为空,或者length 是否小于等于0</span></p>
<p><span>        2.找到了中间的值,但是有可能这个值没有在数组中出现一半以上。这也是需要考虑的的一点。</span></p>
<p><span><br>
</span></p>
<p><span><br>
</span></p>
<p><span>         方法2:另外一种方法,方法1主要消耗在排序上面,如果我们能跳过排序这个步骤,只扫描一遍数组就能找到的话就太好了。我在面试的时候做出来第一种方法后 被特别要求用另外一种方法来做。</span></p>
<p><span><br>
</span></p>
<p><span>         对于数组,我们假设每次删除2个不同元素的值,则剩余的数组中,原先出现频率大于一半的还是会大于一半。一直重复删除,直到剩下的全是同样的数字。则必定是出现了一半次数的那个值。时间复杂度为o(n)</span></p>
<p><span><br>
</span></p>
<p><span>        代码:</span></p>
<p></p>
<pre class="brush:php;toolbar:false">#include <iostream>

using namespace std;

bool isInputInValid = false;
bool CheckInvalidArray( int numbers[ ], int length ){
    isInputInValid = false;//初始认为输入正确
    if( NULL == numbers || length <br>
<h3 id="span-题目-双链表的删除操作-span"><span>        题目2:双链表的删除操作</span></h3>

<p><span><br>
</span></p>
<p><span>        这个没什么要写的,唯一要注意的是判断是否链表最后一个节点的判断条件是next指针指向头节点,而不是判断为空。</span></p>
<p><span><br>
</span></p>
<p><span><br>
</span></p>
<h1 id="span-二面-span"><span>        二面:</span></h1>
<p><span><br>
</span></p>
<p><span>        二面的面试官很和蔼,而且年纪看起来很小。应该也是刚毕业那种。随便自我介绍了下,就开始做题了。</span></p>
<p><span><br>
</span></p>
<h3 id="span-题目-如何求出来一个数组的连续最大和-span"><span>        题目1:如何求出来一个数组的连续最大和</span></h3>
<p><span><br>
</span></p>
<p><span>        这个题目也算是常见题目了,在各大公司面试中出现频率特别频繁。</span></p>
<p><span><br>
</span></p>
<p><span>        思路:</span></p>
<p><span>        </span></p>
<p><span>        1.当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清零,不然的话这个负数将会减少接下来的和。 设置置两个变量 ,初始值都为0,一个记录最大连续和result,一个记录连续和sum,对于数组中的每个值,我们有两种选择,对于正的数值,sum相加,如果大于result,则更新result。对于负数值A[i],我们要考虑两种情况:1) 如果sum+A[i]
 </span></p>
<p></p>
<pre class="brush:php;toolbar:false">int LongConsequiveNum( int A[], int length ){
    int sum = 0, result = 0;
    for( int i = 0; i  0 ){
            sum += A[ i ];
            if( sum > result )
                result = sum;
        }
        else{
            if( A[ i ] + sum <br>
<br>

<p><span>         july博客上有仔细的讲解,传送门:http://blog.csdn.net/v_JULY_v/article/details/6444021</span></p>
<p><span><br>
</span></p>
<p></p><pre class="brush:php;toolbar:false">int MaxSubsequenceSum(const int A[],int N)  
{  
    int ThisSum,MaxSum,j;  
    ThisSum=MaxSum=0;  
    for(j=0;j<n thissum if>MaxSum)  
            MaxSum=ThisSum;  
        else if(ThisSum<br>
<br>

<p><span>        另外这个求数组连续最大和也可以用动态规划来做:</span></p>
<p><span>        </span></p>
<p><span>        将子问题设MaxLen[i]表示以A[i]结尾 的子数组的最大子段和,即:</span><span><span>MaxLen</span>[i]=max{MaxLen(i - 1) ,0} + A[i],状态转移方程写出来了,其余代码就简单了。</span><span><br>
<br>
</span></p>
<pre class="brush:php;toolbar:false">//
//  MaxSum.cpp
//  MaxSum
//
//  Created by chenhao on 12/17/13.
//  Copyright (c) 2013 mini. All rights reserved.
//

#include <iostream>
using namespace std;
#define INTMIN -1000
const int MAX_SIZE =  100;

int data[ MAX_SIZE + 10 ];
int MaxLen[ MAX_SIZE + 10 ];
int N;
int main(int argc, const char * argv[])
{
    while( cin >> N ){
        for( int i = 1; i > data[ i ];
        MaxLen[ 1 ] = data[1];
        for( int i = 2; i  data[ i ] )
                MaxLen[ i ] = MaxLen[ i - 1 ] + data[ i ];
            else
                MaxLen[ i ] = data[ i ];
        }
        int result = INTMIN;
        for( int i = 1; i <br>
<br>

<p><span><br>
</span></p>
<p><span>        题目2:求出来题目1后,立马让求二维数组,二维的没写出来。悲剧。</span></p>
<p><span><br>
</span></p>
<p><span><br>
</span></p>
<p><span><br>
</span></p>
<p><span><br>
</span></p>
<p><span><br>
</span></p>
<p><span>        </span></p>
<p><span>        </span></p>


</iostream>
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

2か月後、人型ロボットWalker Sが服をたたむことができるようになった 2か月後、人型ロボットWalker Sが服をたたむことができるようになった Apr 03, 2024 am 08:01 AM

Machine Power Report 編集者: Wu Xin 国内版の人型ロボット + 大型模型チームは、衣服を折りたたむなどの複雑で柔軟な素材の操作タスクを初めて完了しました。 OpenAIのマルチモーダル大規模モデルを統合したFigure01の公開により、国内同業者の関連動向が注目を集めている。つい昨日、中国の「ヒューマノイドロボットのナンバーワン株」であるUBTECHは、Baidu Wenxinの大型モデルと深く統合されたヒューマノイドロボットWalkerSの最初のデモを公開し、いくつかの興味深い新機能を示した。 Baidu Wenxin の大規模モデル機能の恩恵を受けた WalkerS は次のようになります。 Figure01 と同様に、WalkerS は動き回るのではなく、机の後ろに立って一連のタスクを完了します。人間の命令に従って服をたたむことができる

Baidu Apollo、L4自動運転に対応した世界初の大型モデル「Apollo ADFM」を発売 Baidu Apollo、L4自動運転に対応した世界初の大型モデル「Apollo ADFM」を発売 Jun 04, 2024 pm 08:01 PM

5月15日、Baidu Apolloは武漢Baidu キャロット Auto Robot Zhixing Valleyで2024年アポロデーを開催し、過去10年間におけるBaiduの自動運転における大きな進歩を包括的に実証し、大型モデルと乗客の安全性の新たな定義に基づいた技術的飛躍をもたらした。世界最大の自動運転ネットワークである百度は、自動運転を人間の運転よりも安全なものにしました。このおかげで、より安全、より快適、環境に優しい、低炭素の旅行方法が理想から現実へと変わりつつあります。百度グループ副社長兼インテリジェント・ドライビング・ビジネス・グループ社長の王雲鵬氏はその場で「自動運転車を開発するという私たちの本来の目的は、より良い旅行への人々の高まる切望を満たすことだ。人々の満足こそが私たちの原動力である。なぜなら安全性、とても美しいので、見ることができて嬉しいです

Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Feb 19, 2025 pm 04:54 PM

DeepSeekは、Webバージョンと公式Webサイトの2つのアクセス方法を提供する強力なインテリジェント検索および分析ツールです。 Webバージョンは便利で効率的であり、公式ウェブサイトは包括的な製品情報、ダウンロードリソース、サポートサービスを提供できます。個人であろうと企業ユーザーであろうと、DeepSeekを通じて大規模なデータを簡単に取得および分析して、仕事の効率を向上させ、意思決定を支援し、イノベーションを促進することができます。

百度西陽貝殻の入手方法を紹介 百度西陽貝殻の入手方法を紹介 Mar 28, 2024 am 09:11 AM

西浪には貝殻の場所と入手方法が分からないユーザーがたくさんいます。数時間探してもまだ見つからないプレイヤーもいます。以下では、編集者が百度西陽貝殻の入手方法を紹介します。 . ぜひ見に来てください。 Baidu Xirang Shell の入手方法 1. まずコミュニティに来てから、下の写真の場所に来る必要があります。 2. ここで目的地を選択し、188階に入​​るを選択します。 3. 188 階に入った後、歩いているとこのプロンプトが表示されるので、「了解しました」をクリックします。 4. 砲弾の場所は少し見つけにくいですが、188 エレベーターのすぐ後ろに、砲弾である小さな光る点があります。 5. 貝殻をクリックするには VR コントローラーを使用する必要があります。引き換え方法 1. まず、ページ右上隅の「設定」アイコンをクリックし、「」を選択します。

百度のロビン・リー氏は石油・ガス業界のインテリジェンスについて話し合うためにチームを率いてペトロチャイナを訪問した 百度のロビン・リー氏は石油・ガス業界のインテリジェンスについて話し合うためにチームを率いてペトロチャイナを訪問した May 07, 2024 pm 06:13 PM

5月7日の当サイトのニュースによると、5月6日、百度の創業者兼会長兼最高経営責任者(CEO)のロビン・リー氏がチームを率いて北京の中国石油天然気集団公司(以下、ペトロチャイナ)を訪問し、同社の取締役らと会談した。中国石油総公司の董事長と戴侯良党書記が会談した。両者は協力を強化し、エネルギー産業とデジタルインテリジェンスの深い統合を促進することについて綿密な意見交換を行った。ペトロチャイナはデジタル中国石油総公司の構築を加速し、百度グループとの協力を強化し、エネルギー産業とデジタルインテリジェンスの徹底的な統合を促進し、国家エネルギー安全保障の確保にさらに貢献する。ロビン・リー氏は、大型モデルによって示される「インテリジェントな創発」と理解、生成、論理、記憶といった中核的な機能によって、最先端技術と石油・ガス事業の組み合わせに対する想像力のより広い空間が開かれたと述べた。いつも

Golang フレームワークの面接質問集 Golang フレームワークの面接質問集 Jun 02, 2024 pm 09:37 PM

Go フレームワークは、Go の組み込みライブラリを拡張するコンポーネントのセットで、事前に構築された機能 (Web 開発やデータベース操作など) を提供します。人気のある Go フレームワークには、Gin (Web 開発)、GORM (データベース操作)、RESTful (API 管理) などがあります。ミドルウェアは、HTTP リクエスト処理チェーンのインターセプター パターンであり、ハンドラーを変更せずに認証やリクエストのログ記録などの機能を追加するために使用されます。セッション管理は、ユーザー データを保存することでセッションの状態を維持します。ゴリラ/セッションを使用してセッションを管理できます。

Samsung Galaxy S24シリーズ携帯電話の中国版「Search in Circle」がGoogle検索に対応すると報じられている Samsung Galaxy S24シリーズ携帯電話の中国版「Search in Circle」がGoogle検索に対応すると報じられている Jun 01, 2024 am 09:54 AM

5月31日のニュースによると、ブロガー@ibinguniverseが本日、Samsung Galaxy S24シリーズ携帯電話の中国版「Search in Circle」がGoogle検索をサポートするというニュースを伝えた。ブロガーは具体的な発売時期については明らかにしなかった。 Samsungの以前の紹介によると、Samsung Galaxy S24シリーズは多くの高レベルのAI機能、入力、翻訳、レコーダー、メモ、カメラなどのAIベースの実用的な機能を搭載しており、ユーザーにより便利で効率的な包括的なサービスを提供します。経験。海外版とは異なり、Samsung Galaxy S24シリーズのAI機能のほとんどはBaiduなどの国内メーカーが提供しています。以前に報告されたように、Galaxy AI は、Baidu Wenxin 大型モデルの複数の機能を深く統合しており、エンドサイド対応の通話機能と翻訳機能、および生成 AI によってもたらされるインテリジェントな要約を提供できます。

AIツールのおすすめ AIツールのおすすめ Nov 29, 2024 am 11:08 AM

この記事では、Douyin Doubao、Wenxin Yige、Tencent Zhiying、Baidu Feipiao EasyDL、Baidu AI Studio、iFlytek Spark Cognitive Large Model を含む 6 つの人気 AI ツールを紹介します。これらのツールは、テキスト作成、画像生成、ビデオ編集、AI モデル開発などのさまざまな機能をカバーしています。適切な AI ツールを選択するには、機能要件、技術レベル、コスト予算などの要素を考慮する必要があります。これらのツールは、AI 支援を必要とする個人や企業に便利で効率的なソリューションを提供します。

See all articles