面接経歴(一)

11083 ワード

午前中に科学技術園へ面接に行きます.Netプログラマーは、まだ面接の経験を共有することを忘れていないうちに.会社に着いた後にフロントMMは1部の面接試験問題をあげて、私のしっかり覚えることができるテーマは大体このようにです:
1、C#StringBuildクラスで1~10000の整数接合を実現し、数と数の間をカンマで区切る.例えば、1,2,3,....
2、Javaでintタイプのキューを構築し、10000個の1(含む)から100(含む)の間の整数を生成し、キューに挿入する.
3、C/C++でN(Nは定数)個のintタイプのメモリ空間を実現し、それを解放します.このメモリ空間は連続していますか.
4、OOP(Oriented-Object Programming)のマルチステートをC++/C#/Java(どちらかを選択)コードで実現する.
5、T-SQLで1つのintタイプのフィールドだけを含むテーブルを作成し、1から10000をテーブルに挿入し、このフィールドのすべての行を合計します.
6、C#コードの出力を書く:
  Console.WriteLine(32.ToString("F01"));   Console.WriteLine(32.ToString("X"));
7、Javaコードの出力を書く:
  System.out.println(Math.round(10.5));   System.out.println(Math.round(-10.5));   System.out.println(Math.round(5 & 10));
8、次のCコードのfoo関数はどんな役割がありますか?このコードには何か欠陥がありますか?
int foo(const char* p)
{
   const char* q = p;
   while (*p != '\0' && *p != '0')
          p++;
   return  (*p != '\0') ? -1 : (p -q);
}
9、おなじみの言語で文字列の反転を実現し、言語自身が提供するツール関数を使用することはできません.
10.フェポラチ数列の第N項を再帰的に実現する.
 
質問をするのに1時間くらいかかったでしょうが、ここで注意しなければならないのは、入社後に携帯電話を静かにしたり、電源を切ったりすることです.面接官は私の答えを見てよくやったと言って、それから他の質問を始めました.私は時間の前後に話しました.
1、簡単に自分を紹介する.
私は主にプロジェクトの経験から答えました.具体的にはこの3つの面です.
a)プロジェクトの業務プロセス.
b)プロジェクトで使用する基本技術、ツール.
c)開発プロジェクトのチーム規模と自分のプロジェクトにおける職責.
 
私の履歴書には2年間の仕事の経験が書いてあります.それぞれ2つの会社にいたことがあります.それぞれの会社の仕事の時間は丸1年です.
2なぜ最初の会社を辞めたのかと聞かれました.
最初の会社はVBで開発したので、私は好きではないので率直に言いました.  
3なぜ2番目の会社を辞めたのかと聞かれました.  
二つの仕事はC/S構造の開発で、今B/S構造の開発をしたいです.
ここで注意しなければならないのは、どんな理由で退職しても、敏感な原因を言わないほうがいいということです.また、頻繁に転職すると、面接官は求職者が落ち着かないと感じ、面接官は私が2年に2回転職したのを見て、私が会社に1年滞在して離れるのではないかと心配しているので、履歴書に数年以内に多くの仕事が現れてはいけないので、柔軟に処理することができます.
 
ビッグデータの処理とデータベースの最適化について話しました.ビッグデータの処理には経験がないので、データベースの最適化の一般的な考え方に答えました.ここで説明しなければならないのは、自分がビッグデータの処理などの経験がなければ、謙虚に答えてください.興味があれば、次の試験官に聞いてください.
4データベース最適化の一般的な考え方(間違ったところがあればご指摘ください)
a)物理I/O
b)コンパイル時間
c)実行計画
b)表設計
d)文レベル
現在、私はデータベースの最適化に対する認識が浅く、私の知っている面から答えるしかありません.もしみんなが興味があれば、徐海蔚が書いた本を読むことができます.
 
面接官と1時間ほど話して、期待していた給料を聞いて、自分の現在の給料と業界の給料基準から大体の範囲を与えることができます.ここで注意しているのは、給料の話をするときに範囲を与えたほうがいいということです.
5期待の給料はいくらですか.
自分の現在の給料と深センのソフトウェア業界の2年の仕事の経験の給料の平均レベルによって、私の期待する月給はXXXXからYYYYです.最後に面接官は私に何か聞きたいことがあるかと聞いて、私は自分がどの方面の仕事を担当するかを聞いた.
 
午後帰ってきて面接に合格したメールを受け取りました.頼りになる会社は給料と各福祉待遇をメールで面接者に通知します.
 
以下はテーマの答えの構想で、参考に供します.
1、C#StringBuildクラスで1~10000の整数接合を実現し、数と数の間をカンマで区切る.例えば、1,2,3,....
using System.IO;
using System;
using System.Text;

class Program
{
    static void Main()
    {
       StringBuilder sb = new StringBuilder();
       
       int i = 1;
       for (i = 1; i < 10000; i++)
       {
           sb.Append(i.ToString() + ",");
       }
       sb.AppendLine(i.ToString());
      
      Console.WriteLine(sb.ToString());
    }
}

 
2 Javaでintタイプのキューを構築し、1(含む)から100(含む)までの10000個の整数を生成し、キューに挿入します.
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue; 

public class HelloWorld{

     public static void main(String []args){
        
        Queue q = new LinkedBlockingQueue();
        
        for (Integer i = 1; i <= 10000; i++)
        {
            q.offer((int)(Math.random() * 100 + 1));
        }
        
        for(Integer x : q)
        {
            System.out.println(x);
        }
     }
}

3、C/C++でN(Nは定数)個のintタイプのメモリ空間を実現し、それを解放します.このメモリ空間は連続していますか.
#include 
#include 

#define N 10

int main()
{
    int* p = malloc(sizeof(int) * N);
   
    printf("use the memory ...
"); free(p); return 0; }

一般的には連続していますが、コンパイラはオペレーティングシステムに申請する空間が連続していることを保証できません. 
 
4、OOP(Oriented-Object Programming)のマルチステートをC++/C#/Java(どちらかを選択)コードで実現する.
マルチステートはオーバーライドとリロードの2つの側面から考えることができ,私はオーバーライドの観点から実現した.
using System.IO;
using System;

namespace myNameSpace
{
    public class Animal
    {
        public virtual void Jiao()
        {
            
        }
    }
    
    public class Dog : Animal
    {
        public override void Jiao()
        {
            Console.WriteLine("bark...");
        }
    }
    
    public class Cat : Animal
    {
        public override void Jiao()
        {
             Console.WriteLine("meow...");
        }
    }

    class Program
    {
        static void Main()
        {
            Dog g = new Dog();
            g.Jiao();
            Cat c = new Cat();
            c.Jiao();
        }
    }
}

 
5、T-SQLで1つのintタイプのフィールドだけを含むテーブルを作成し、1から10000をテーブルに挿入し、このフィールドのすべての行を合計します.
CREATE TABLE t1
(
  i INT PRIMARY KEY NOT NULL
 )

DECLARE @i int 
SET @i = 1
WHILE(@i <= 10000)
BEGIN
   INSERT INTO t1(i) VALUES(@i)
   SET  @i = @i + 1
END

;WITH cte AS
(
SELECT i,'1' 'GroupingCondition' FROM t1
)
SELECT SUM(i) 'sum' FROM cte GROUP BY GroupingCondition

 
6、C#コードの出力を書く:
  Console.WriteLine(32.ToString("F01"));  Console.WriteLine(32.ToString("X"));
C#のToString()メソッドについては、このブログを参照してください.http://www.cnblogs.com/jacktu/archive/2007/11/30/978293.html
 
7、Javaコードの出力を書く:
  System.out.println(Math.round(10.5));  System.out.println(Math.round(-10.5));  System.out.println(Math.round(5 & 10));
round(n):nを四捨五入し、そのアルゴリズムはn+0.5後に下向きに整列することに等価である.
 
8、次のCコードのfoo関数はどんな役割がありますか?このコードには何か欠陥がありますか?
int foo(const char* p)
{
   const char* q = p;
   while (*p != '\0' && *p != '0')
          p++;
   return  (*p != '\0') ? -1 : (p -q);
}
役割:pが指す文字列に文字'0'が含まれている場合は、-1を返します.そうでない場合は、pが指す文字列のバイト数(長さ)を返します.
欠陥:定数を指すポインタpのアドレスが変更され、pが指すコンテンツを使用する必要がある場合、pが指すコンテンツはNULLである.(ここではいくつかの概念を区別する必要があります:定数を指すポインタ、定数を指すポインタ)
 
9、おなじみの言語で文字列の反転を実現し、言語自身が提供するツール関数を使用することはできません.
私の処理の構想は:頭の尾のポインタを使って交換して、T(N)=O(N)
 
10.フェポラチ数列の第N項を再帰的に実現する.
逐次方程式を解いて再帰を求める時間の複雑さ,T(N)=O(((1+√5)/2)^N),数年線形代数を見ていないので,この問題は間違っている.
転載先:https://www.cnblogs.com/freecodeX/p/4324797.html