国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

記一次筆試面試題之算法

2019-11-17 02:48:02
字體:
來源:轉載
供稿:網友

記一次筆試面試題之算法

快到年底了,考慮到一些情況,加之現在工作業務沒那么多了,本著想在技術上想在多學點東西的想法,突然間萌生了想換工作的想法,恰好一不錯的公司Hr給我說他們在招人,于是我就偷偷的給了份簡歷,時隔幾天她給了我一份筆試題,我一看有算法題,這是我最頭疼的問題,我不反對面試算法,但是我感覺很多用人單位還是要本著自己的業務水平去面試,招適合本公司業務處理,相對比較實用又符合發展的人才就行了,當你真正拿出一些很高深的算法去面試的時候,我感覺你要看看你開出來招人的預算是不是能達到答出來這些題的待遇,是不是你現在的業務就需要這么高深的技術支撐,同時是不是能給一些比方說像我這種級別低點的大眾化程序員次機會!下面我列出面試題也求園里的高手求解下,本人求知若渴,只想做在技術上的交流,因為我確實在算法上很不在行,本著虛心求教的態度,我想在這方面多學習下。

要求30分鐘 編程語言不限,允許有小的語法錯誤; 在程序前面簡單寫出編程思路; 1、編寫一個函數,不用臨時變量,直接交換兩個數。 2、用數組實現一個容量為n的隊列,要求進隊列和出隊列的時間復雜度都為O(1)。 3、寫一個函數,在給定的n個數字中,找出最小的m個,其中m<n。請一并給出算法的時間復雜度。

一下是我發給他們的答案

class PRogram    {        static void Main(string[] args)        {            //第一題              int numA = 321;            int numB = 8765;            numA = numA ^ numB;            numB = numB ^ numA;            numA = numA ^ numB;            Console.WriteLine(numA);            Console.WriteLine(numB);            //第二題            var n = 100;            var arr = new string[n];            var index = 0;            var last = 0;            //入隊列            Action<string> push = s =>            {                var nIndex = index + 1;                nIndex = nIndex == n ? 0 : nIndex;                if (nIndex == last)                {                    Console.WriteLine("隊列已滿");                    return;                }                arr[index] = s;                index = nIndex;            };            ///出隊列            Func<string> pop = () =>            {                string result;                if (index == last)//隊列中無數據                {                    result = null;                }                result = arr[last];                last++;                last = last == n ? 0 : last;                return result;            };            push("AAA");            push("BBB");            push("CCC");            push("DDD");            Console.WriteLine(pop());            Console.WriteLine(pop());            Console.WriteLine(pop());            Console.WriteLine(pop());            //第三題  算法復雜度O(n) 因為時間關系目前只支持正整數             int[] arrInt = new[] { 1, 2, 4, 6, 8, 9, 4, 2, 4, 7, 9 };             int n1 = arrInt.Length;            Func<int, int[]> func = m =>            {                var max = 0;                foreach (var item in arrInt)                {                    max = max < item ? item : max;                }                var nArr = new bool[max + 1];                foreach (var item in arrInt)                {                    nArr[item] = true;                }                var result = new int[m];                var indexInt = 0;                for (var i = 0; i < nArr.Length; i++)                {                    if (nArr[i])                    {                        result[indexInt] = i;                        indexInt++;                    }                    if (indexInt == m)                    {                        break;                    }                }                return result;            };            var tmp = func(3);            foreach (var item in tmp)            {                Console.WriteLine(item);            }            Console.ReadKey();        }    }

以上是我給過去的答案,最后的結果是沒通過,但是我也不能在厚著臉皮去問為什么了,畢竟那邊是人事不是技術,我感覺我第三題的算法可能有問題,我是拿了空間換時間,要是輸出重復的就實現不了了,算是我鉆了個漏洞吧,哈哈,雖然實現了功能要求,但是我確實不知道怎么寫比較好一點,希望園子里的高手能給我指點下,第三題應該怎么寫?雖然沒通過,但是我也想在一次面試中找到自己的不足,這道題以我目前的水平不足以有更好的寫法了,所以想求解更好的答案


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青冈县| 江永县| 遂川县| 平山县| 芦溪县| 大洼县| 崇明县| 泰和县| 永福县| 泾阳县| 同仁县| 精河县| 麻栗坡县| 卢龙县| 红桥区| 南丹县| 广昌县| 贵南县| 左云县| 遂平县| 台北市| 循化| 鄢陵县| 嘉鱼县| 枣阳市| 普定县| 遵义县| 新余市| 尚志市| 闻喜县| 南岸区| 淮北市| 广灵县| 郎溪县| 五峰| 平度市| 广南县| 错那县| 永川市| 广宁县| 铁岭县|