def check_dict_of_arrays(doa, columns):
    """
    Checks the data-structure that dict of arrays has at least the keys in
    columns and that each entry's length is the same as the others.
    - doa: (Dict String (Array String)), dictionary with string keys to arrays of string
    - columns: (Array String), the columns of doa
    RETURN: (Array String), array of issues
    """
    issues = []
    length = None
    for col in columns:
        if col not in doa:
            issues.append(f"{col} not in doa")
            continue
        if length is None:
            try:
                length = len(doa[col])
            except TypeError:
                issues.append(f"could not take length of doa['{col}']")
        elif len(doa[col]) != length:
            issues.append(
                    f"len(doa['{col}']) = {len(doa[col])} != {length}," +
                    " the length of other columns")
    return issues